0


【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现

前言

🌟🌟本期讲解关于文件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)

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

** 😊😊 期待你的关注~~~**


本文转载自: https://blog.csdn.net/GGBond778/article/details/142884640
版权归原作者 GGBondlctrl 所有, 如有侵权,请联系我们删除。

“【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现”的评论:

还没有评论