JavaEE-文件IO1

文章目录

  • 一、什么是文件IO?
    • 1.1 IO
    • 1.2 文件
      • 1.2.1 路径
      • 1.2.2 文件分类
  • 二、使用Java针对文件系统进行操作


一、什么是文件IO?

1.1 IO

IO分别代表Input和Output即输入和输出。比如我的电脑可以从网络上下载文件,也可以通过网络上传文件或者我把我的内存中的数据保存到硬盘,将硬盘中的数据读取到内存。以上这些实际上都是文件IO,不过这里肯定有不少同志分不清哪个过程是输入,哪个过程是输出,这其实是人为规则规定的。
在这里插入图片描述
如图,如果说数据是朝cpu方向流动的,那么就是输入,如果说数据是朝cpu相反方向流动的,那么就是输出。

1.2 文件

文件本身也是广义的概念,在操作系统中将很多资源都抽象成文件,此时在这里的文件就是狭义的文件,也就是平时保存在硬盘上的文件。
文件夹是否是文件,事实上文件夹也是文件并被称为目录文件,也是保存在硬盘上。在硬盘上,很多文件和目录构成树形结构,类似于一个N叉树。
在这里插入图片描述

1.2.1 路径

文件非常多,并且目录也非常多,我们需要一种方式来标识某个具体的文件。这样就引出了路径,路径就是从根节点出发一层一层往下走,最终到达目标文件后,中间这些目录集合在一起就构成了路径。
(1)绝对路径
从盘符开头的路径,也称为绝对路径。
(2)相对路径
相对路径的起点可以是任何路径。
路径是使用/或者\来分割目录,但是\分割目录只能在windows操作系统中使用,其它操作系统只支持/分割。
这里还有两个注意点第一个就是./的使用,假如我们启动qq.exe文件,此时路径如下:
在这里插入图片描述
此时工作目录就是D:\QQNT,在此时./就是表示D:\QQNT。对于第二个注意点就是…/的使用,此时…/表示当前目录的上一级目录就是D:\,还是很好理解的。

1.2.2 文件分类

文件存储在硬盘上。文件分类方式有很多种,在这里主要讨论和编码相关的一种分类方式,就是将文件分为二进制文件和文本文件。
其实区分一个文件是文本文件还是二进制文件很简单,就是以记事本打开文件,如果显示乱码就是二进制文件,如果没有乱码以字符显示那么就是文本文件。
日常常见的docx,pdf以及pptx都是二进制文件,因为它们是富文本文件,除了文本还要其它很多信息。mp4,mp3等等都是二进制文件。md,html,java,c都是文本文件。文本文件是给人看的,二进制文件是给程序看的。

二、使用Java针对文件系统进行操作

针对文件系统进行操作包括创建文件,删除文件,创建目录,重命名文件…
Java标准库提供了File类表示一个文件,进一步通过File类对象提供的方法就可以对文件系统进行操作了。File类在java.io这个包中,和输入输出相关的类也在这个包当中。
对于File类的使用是比较简单的,因为就只需要记得一些方法如何使用即可。这里只介绍部分方法的使用细节,要是想了解更多就可以点击这个链接。
注意:构造File对象时,路径不必真实存在。
在这里插入图片描述
代码示例1:

package io;import java.io.File;
import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {File file = new File("F:/test.txt"); //创建的file类对象的路径中的文件可以存在也可以不存在//使用绝对路径 输出标准看不出差别System.out.println(file.getParent());// F:/System.out.println(file.getPath());// F:/test.txtSystem.out.println(file.getName());// test.txtSystem.out.println(file.getAbsolutePath());// F:/test.txtSystem.out.println(file.getCanonicalPath());// F:/test.txtFile file1 = new File("./test.txt");System.out.println(file1.getParent());// 这里父目录直接草率的取了.System.out.println(file1.getName());// 这里名字还是一样test.txtSystem.out.println(file1.getPath());// 取的是相对路径System.out.println(file1.getAbsolutePath());// 将工作目录和给出的相对路径进行直接拼接// 这里的工作目录就是当前项目所处的工作目录// 如果在命令行界面使用java运行 那么工作目录就是运行时的命令行的路径 例如自己在命令行运行工作目录就是C:\Users\1System.out.println(file1.getCanonicalPath());// 去掉上面绝对路径的那个点 就是更多的对格式进行调整}}

代码示例1运行结果:
在这里插入图片描述
代码示例2:

package io;import java.io.File;
import java.io.IOException;public class Demo2 {public static  void main(String[] args) throws IOException {File file=new File("./test.txt");file.createNewFile();//创建文件 如果文件存在就返回false 如果文件路径不合法就抛出异常System.out.println(file.exists());System.out.println(file.isFile());System.out.println(file.isDirectory());}}

代码示例3:

package io;import java.io.File;
import java.util.Scanner;public class Demo3 {public static void main(String[] args) {File file =new File("./test.txt");Scanner in=new Scanner(System.in);//删除文件//file.delete();//在线程结束时删除文件//在编写word文档时会自动添加一个隐藏文档来记录修改 当叉掉word文档时这个文件就会删除// 这个文档适用于突发状况例如电脑掉电也不会丢失修改内容file.deleteOnExit();in.next();System.out.println(file.exists());}
}

这里有个方法比较特殊,就是deleteOnExit方法,它在程序运行的时候不会删除文件,只会在程序运行结束后删除文件。类似的思想在word中也有展现,在编辑word时会产生一个临时文件如下图,当你完成编辑时,就会将这个临时文件给删除。这里使用这样的设计主要是为了在电源掉电时能够将已经修改的内容给保存下来,这样下次重启word就能继续前面的编辑进度。
在这里插入图片描述
代码示例4:

package io;import java.io.File;public class Demo4 {public static void main(String[] args) {File file=new File("./testDir");// 创建单级目录//file.mkdir(); //创建成功返回true 已经存在创建失败返回falseFile file2=new File("./testDir/aaa/bbb/ccc");// 创建多级目录file2.mkdirs();System.out.println(file.isDirectory());}
}

代码示例5:

package io;import java.io.File;public class Demo5 {public static void main(String[] args) {File file1=new File("./test2.txt");//不仅能可以重命名文件 还可以挪动文件到文件夹下面File file2=new File("./testDir/test2.txt");file1.renameTo(file2);}
}

对于文件系统的操作都是使用File类中的方法进行实现,比较简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 离线地图实现

效果图: 一、获取市的地图数据 DataV.geoAtlas 获取市地图数据 点击地图缩放至想要的市区域,通过右侧的链接打开网址,复制json数据。 二、获取镇地图数据 选择你想要的镇数据,点击下载 选择级别(清晰度&#xff09…

Plotly数据可视化宝典

一、引言 在数据驱动的时代,数据可视化已成为不可或缺的一部分。通过图形化的方式展示数据,我们能更直观地理解数据的内在规律和趋势。Plotly,作为一款强大的数据可视化工具,以其丰富的图表类型、交互性和灵活性,赢得了广大数据科学家的青睐。本宝典将深入解析Plotly的各…

mysql存储比特位

一、介绍 二、SQL CREATE TABLE bits_table (id INT PRIMARY KEY AUTO_INCREMENT,bit_value BIGINT UNSIGNED );-- 插入一个 8 位的 BIT 值 INSERT INTO bits_table (bit_value) VALUES (B10101010);-- 查询并格式化输出 SELECT id,bit_value,CONCAT(b, LPAD(BIN(bit_value),…

Midjourney绘画关键词参数汇总(二)

本文将继续介绍Midjourney绘画关键词参数的汇总,探索其在数字绘画中的应用和潜力。本文主要是提供与主题相关的关键词供大家参考学习。 大家感兴趣的话,可以在下列Midjourney中文版系统中体验:https://ai.easyaigx.com 一、日本漫画主题关键…

MGRE实验——路由配置

对134环回 ping一下发现都可以通 配置3,4同3 再注册 然后内网要互通,起rip 宣告1的左边和右边 对3 对4 当3,4之间要互通时,首先在1上 关闭之后,3就能学到4上的用户网段,4也能学到3 局域网要访问广域网一定…

大数据学习之 Hadoop部署

Hadoop部署 Linux桌面模式关闭 # 设置 systemctl set-default multi-user.target # 重启 reboot防火墙关闭 systemctl status firewalld systemctl stop firewalld # 关闭开机自启 systemctl disable firewalld配置Java环境 echo $JAVA_HOME java -version # Java配置 # 上传ja…

【贪心算法题目】

1. 柠檬水找零 这一个题目是一个比较简单的模拟算法,只需要根据手里的钱进行找零即可,对于贪心的这一点,主要是在20元钱找零的情况下,此时会出现两种情况:10 5 的组合 和 5 5 5 的组合,根据找零的特点&a…

容器监控方案

1、docker部署prometheus Prometheus是一套开源的系统监控报警框架,它基于时序数据库,并通过HTTP协议周期性地从被监控的组件中抓取指标数据。以下是一些关于Prometheus的详细介绍: 基本概念:Prometheus所有采集的监控数据均以指…

VUE3注册指令的方法

指令注册只能全局指令和选项式页面指令,composition api没有页面指令 选项式页面指令 <template><div class"home"><h3>自定义指令</h3><div class"from"><el-input type"text" v-focus v-model"name&q…

“壕无人性”的沙特也要买量子计算机!巨头沙特阿美的合作方竟是它?

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1200字丨5分钟阅读 摘要&#xff1a;石油巨头沙特阿美与 Pasqal 开启合作&#xff0c;计划于 2025 年部署一台 200 量子比特的量子计算机&#xff…

uniapp星空效果

uniapp星空效果 背景实现思路代码实现尾巴 背景 之前在网上看到过一个视频&#xff0c;使用纯css实现过一个星空效果。具体出处找不到了&#xff0c;我们按照他那个思路来实现一个类似的效果&#xff0c;还是先上一张图镇楼&#xff1a; 实现思路 首先我们这个效果使用的是…

添加辅小区

4G 5G添加辅小区都是通过rrcConnectionReconfiguration消息的SCellToAddMod 4G -sCellToReleaseList-r10 :: SEQUENCE OF OPTIONAL:Omit-sCellToAddModList-r10 :: SEQUENCE OF SIZE(1..maxSCell-r10[4]) [1] OPTIONAL:Exist| -SCellToAddMod-r10 :: SEQUENCE [111]| -sCell…

python安装路径可以更改吗

Python3.5默认安装路径是当前用户的 AppData\.. 下 现在安装过程中默认是install just for me&#xff0c;这个会把python默认安装到AppData文件夹中&#xff0c;如果选了install for all users&#xff0c;就会默认安装到C盘根目录了。 python3.5 安装&#xff1a; 输入官网…

【论文速读】|探索ChatGPT在软件安全应用中的局限性

本次分享论文&#xff1a;Exploring the Limits of ChatGPT in Software Security Applications 基本信息 原文作者&#xff1a;Fangzhou Wu, Qingzhao Zhang, Ati Priya Bajaj, Tiffany Bao, Ning Zhang, Ruoyu "Fish" Wang, Chaowei Xiao 作者单位&#xff1a;威…

Linux命令和工具:包管理器工具yum命令使用详解

一、yum包管理器概述 Yum&#xff08;Yellowdog Updater Modified&#xff09;是一个非常流行的Linux包管理器&#xff0c;主要用于RPM包管理系统。它能够帮助用户安装、升级、降级和删除RPM包&#xff0c;同时也可以检索有关RPM包的信息。换一句话说&#xff0c;yum允许用户从…

linux系统硬盘读写慢的排查方法

如果服务器硬盘读写慢&#xff0c;可能会导致处理性能降低&#xff0c;用户响应慢。因此及时排除故障至关重要。下面是硬盘读写慢的排查思路。 1、top命令查看硬盘是否繁忙。 2、找出占用硬盘带宽高的进程。 通过iotop命令进行查看&#xff0c;iotop命令是用于展示硬盘读写操作…

【Linux】:Linux 2.6内核 调度队列和调度原理

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux 2.6内核 调度队列和调度原理&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a…

Mysql超详细安装配置教程(保姆级图文)

MySQL是一种流行的开源关系型数据库管理系统&#xff0c;它广泛用于网站和服务的数据存储和管理。MySQL以其高性能、可靠性和易用性而闻名&#xff0c;是许多Web应用程序的首选数据库解决方案之一。 一、下载安装包 &#xff08;1&#xff09;从网盘下载安装文件 点击此处直…

Redis常见数据类型(4) - hash, List

hash 命令小结 命令执行效果时间复杂度hset key field value设置值O(1)hget key field获取值O(1)hdel key field [field...]删除值O(k), k是field个数hlen key计算field个数O(1)hgetall key获取所有的field-valueO(k), k是field的个数hmget field [field...]批量获取field-va…

蓝桥杯-合并数列

小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案&#xff0c;分别将它们列为两个数组 {a1, a2, …, an} 和 {b1, b2, …, bm}。两个数组的和相同。 定义一次合并操作可以将某数组内相邻的两个数合并为一个新数&#xff0c;新数的值是原来两…