前言
🌟🌟本期讲解关于文件IO的操作,这里涉及到比较常用的文件操作哦~~~
🌈上期博客在这里:【JavaEE初阶】CAS的ABA问题,JUC多线程编程有用的相关类-CSDN博客
🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客
📚️1.初识文件
1.1认识硬盘
我们知道文件一般存储在硬盘(即磁盘上),但是在计算机中,这里的硬盘不完全等于磁盘,磁盘这里有磁带,而磁盘是外存储的一种,我们的硬盘即软盘(机械硬盘)是一种依靠磁性为介质来进行存储数据的;后来2017年这里有更新的(ssd)即固态硬盘,这里的数据的读取就快了很多倍(这里是依靠集成电路)来进行实现的;
扩展:
这里的机械硬盘是擅长顺序读写的,但是不擅长随机读写,机械硬盘图示如下:
这里机械硬盘就是通过磁头通过停留在不同的位置,通过不同位置的磁性来获取数据信息;
注意:机械硬盘擅长顺序读写,但是这里不擅长随机读写
举例:
当拷贝一份很大文件的时候,由于要全部都拷贝下来,那大部分都是通过磁盘高速旋转,然后磁头在进行读取数据的操作,
但是拷贝的是离散的小份的文件,那么大多数就是磁头在的移动,可以看到这很明显比较磁盘旋转获取的数据的速度更慢;
1.2路径
所谓的文件路径就是在我们电脑上方的路径的实现,如图所示:
当我们点击这里的路径时,所展示的就是文件的路径了:
E:\Thread\src
这里就是小编打开文件的路径;
1.相对路径和绝对路径
这里的路径分为两种比较重要的路径:
绝对路径:所谓的绝对路径就是重根目录出发,然后逐步表示到我们目标文件的位置;
相对路径(当前目录、工作目录):就是从当前的目录进行查找我们的目标文件
例如:我们找一下test.txt
这里的绝对路径就是:E:\Thread\src\test.txt
但是相对路径就是:.\test.txt(前提是我们已经在当前这个目录上了),这里的“.” 代表的就是E:\Thread\src;
目标文件图示:
1.3文件
1.文本文件和二进制文件
文件这里分为两种重要的文件:
两种重要的文件:文本文件,二进制文件
文本文件:
这的文本文件就表示的是按照文本、字符串的方式来进行理解的(即二进制表示的字符),进行一步说:就是二进制表示的字符正在ASCII码表,和gbk&utf8码表上能够进行对应
二进制文件:
这里的二进制文件,没有上述的限制,这里可以存储任何的数据;
2.两种文件的区别
这里我们的记事本就是读取的就是文本文件,,那么我们判断一个文件是否为文本文件还是二进制文件,就可以通过记事本来进行数据的演示:
实例:
1.当我们读取一个二进制文件的时候,并用记事本进行打开,就有如下的图示:
可以看到此时展示的就是一堆的乱码,这就是二进制文件。
2.当我们打开一个 文本文件的话,这里的展示如下图所示:
那么此时就是一个可以看得懂的关于小编写的关于文件IO的操作;
在日常的生活中:图片,视频,音频,动态库都是二进制的文件,PPT,Word也是一种二进制的文件;
注意,补充:计算机对于文件是一个广义的概念:
硬盘上的普通文件是一个文件
硬盘上的文件夹是一个目录
这里的概念就是我们“专业人士使用的词哈~~~~”
📚️2.文件系统操作
在操作系统中提供了一系列的文件系统的操作API,我们java又对这个操作系统提供的文件系统API又进行了封装,所以我们能够在idea上进行文件系统的操作;
这个包就是java.io,这里提供了File类进行文件系统的一些列操作;
2.1File的构造方法
这里的File的构造方法就有一下几个:
假如还是看这个test.txt这里的parent文件路径就是:E:\Thread\src
这里我们重点讲解第二个:File(String pathname)这个构造方法的使用;
注意:这里的路径可以是绝对路径,或者是相对路径如果我们在idea上使用相对路径,那么工作的目录就是项目的目录;
当然这里也可以是不存在的路径;
2.2文件系统操作的方法
1.文件路径的操作
这里的方法演示比较多小编就一段代码般的演示吧,代码如下:
public static void main(String[] args) throws IOException {
//File file=new File("E:/Thread/test.txt");
File file=new File("./test.txt");
System.out.println(file.getParent());//文件的父目录
System.out.println(file.getName());//返回文件的名字
System.out.println(file.getPath());//引用
System.out.println(file.getAbsolutePath());//一个绝对的路径
System.out.println(file.getCanonicalPath());//一个被修饰的绝对路径
}
解释:
这里操作是在,我们创建了一个文件的情况下的:
这里的test.txt
当我们使用当前工作目录时,如上图所示:
getParent():即表示哦们需要查找目标文件的父目录,那么此时就输出“.”;
getName():表示的是当前我们要查找的文件的文件名字
getPath():返回 File 对象的文件路径,这里就是输出括号里的路径
getAbsolutePath():返回 File 对象的绝对路径
getCanonicalPath():返回 File 对象的修饰过的绝对路径
这里的打印就是如下图所示:
以上就是关于路径的文件IO的操作了;
2.文件是否存在操作
和上一致的,小编通过代码进行演示,代码如下:
File file=new File("./test1.txt");
System.out.println(file.exists());
System.out.println(file.isDirectory());//表示是否是一个目录
System.out.println(file.isFile());//表示是否是一个普通目录
解释:
exists():几表示的是这个文件是否存在;
**isDirectory(): **表示这个文件是否为目录;
isFile():表示的是否为一个普通的文件;
这里的前提是创建了一个test1.txt的文件,这里的输出如下:
很明显,这里是一个普通的文件形式,并且这是存在这个工作目录上的文件,即存在的
3.文件的创建和删除
1.文件的创建
代码实例如下:
//进行创建
boolean result = file.createNewFile();
System.out.println("result=" + result);
这里就是一个在上述test.txt不存在的时候,可以进行创建,当执行程序后:
这里就是不存在test.txt文件,但是创建后,就存在了:
2.文件的删除
1.立马删除
代码如下:
//删除一个目录
boolean result1=file.delete();
System.out.println(result1); //很明显delete也能够删除目录
在上述的操作中就可以删除文件
2.过后删除
代码如下:
File file = new File("./test.txt");
file.deleteOnExit();
Thread.sleep(5000);
这里就是在函数执行完代码的时候,才会进行文件的删除操作,注意此时是没有返回值的;
在平时的运用中,代表的是临时文件,只有当程序正常结束,才会直接删除,若存在异常退出(断电)文件就不会进行删除操作;
4.文件名字读取
File file=new File(".");
File[] files1=file.listFiles();//所有文件
String[] files=file.list();//所有文件名字
System.out.println(Arrays.toString(files));
System.out.println(Arrays.toString(files1));
解释:
File[] files1=file.listFiles():表示的是这里工作目录下的所有文件
String[] files=file.list():表示这里工作目录下所有文件的名字是啥
这里的输出如下:
5.文件目录的创建
代码如下所示:
public static void main(String[] args) {
File file=new File("./aaa");
boolean result=file.mkdir();
System.out.println(result);
}
这里的输出就是一个boolean类型,此时就创建了一个目录,如下:
当然我们要创建一个多重的目录的时候,代码如下:
public static void main(String[] args) {
File file=new File("./aaa/bbb");
//创建一个目录
boolean result=file.mkdirs();
System.out.println(result);
}
这种情况下就能创建多个目录,输出如下:
这里就创建了多个目录,并分在aaa目录下的bbb
**mkdir()**:代表的是创建File 对象代表的目录
**mkdirs()**:代表的是可以创建多个目录
6.文件重命名
代码如下:
File orign=new File("./test.txt");
File cheak=new File("./test1.txt");
orign.renameTo(cheak);
这里的前提是test.txt文件是存在的但是,这里就是文件的改名,这里的rename还可以移动文件;
📚️3.总结
💬💬本期主要进行了文件的认识,和和硬盘的认识,以及对于文件系统的操作进行了具体的代码演示,可供uu们学习,了解~~~
本期的代码在这里哦:****IO: IO文件操作 (gitee.com)
🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!
💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。
** 😊😊 期待你的关注~~~**
版权归原作者 GGBondlctrl 所有, 如有侵权,请联系我们删除。