【JavaEE初阶】文件操作 和 IO (上篇)

☕导航小助手☕

     🍚写在前面

          🍣一、文件

               🍛🍛1.1 文件的概念

               🦪🦪1.2 文件的路径

          🍜二、 Java中文件系统操作

               🍱🍱2.1 File类的属性

               🥡🥡2.2 File类的构造方法

               🍰🍰2.3 File类的方法

                          🍤🍤🍤2.3.1 File类的常用获取方法

                          🧀🧀🧀2.3.2 File类的常用判断方法

                          🍔🍔🍔2.3.3 文件的创建与删除

                          🧇🧇🧇2.3.4 其他的常用方法

               🥣🥣2.4 代码示例演示

                          🥩🥩🥩2.4.1 演示一:演示File类的一些常见用法

                          🥮🥮🥮2.4.2 演示二:文件的创建及其相关属性

                          🍲🍲🍲2.4.3 演示三:文件的删除

                          🍗🍗🍗2.4.4 演示四:创建目录

                          🍖🍖🍖2.4.5 演示五:文件重命名


写在前面

在本篇博客中,将主要介绍 的时文件的概念、文件的路径、Java中 文件系统的操作(主要介绍 File类 的各种属性与方法)~

另外,为了防止产生视觉疲劳,这块内容将分为上篇、下篇 两篇博客来介绍 ~

 

一、文件

1.1 文件的概念

我们平时所说的文件,一般都是存储在计算机硬件上面的文件,可以是 文本文档、图片、程序等等,一般是以 .jpg  .txt .mp3 、 .mp4 .pptx 等文件格式 ~

而在计算机中的概念,目录(也就是 文件夹)也是文件的一种,称为 目录文件 ~ 

 

1.2 文件的路径

文件的路径 一般分为两种:一种是 绝对路径,一种是相对路径 ~

绝对路径:以盘符开头 的路径 ~

相对路径: . 或者 .. 开头的 路径,需要先明确一个基准路径,来找到目标的目录 ~

目录和目录之间,可以用 \ 分割,也可以使用 / 分割;

但是更推荐使用 / 的,因为 \ 在字符串里面表示 转义字符,要想表示分割,就需要 \\,还不如直接用 / 来的更好 !!!


来列举一个例子,以帮助大家更好的理解 绝对路径 和 相对路径 ~

假设 A同学 想要去图书馆看书,但是由于学校非常的大,绕来绕去的就把 A同学 绕晕了 ~

此时,A同学看到 学校大门口旁边有个 警卫,于是就跑过去问路 ~

那么,此时 绝对路径 的内容都是固定的,无论 A同学在哪里,这条路经都是不变的 ~

而所谓的相对路径,其实就是相对的(以 A同学自身的位置为基准的):

当 A同学在校门口的时候,相对路径就是

当 A同学在躬行楼的时候,相对路径就是

 当 A同学在行知广场的时候,相对路径就是


在使用 Idea 运行程序的时候,当前的工作目录(取为基准路径)就是项目所在的目录 ~

二、 Java中文件系统操作

在之前所介绍过的 冯诺依曼体系结构中,我们已经知道,文件是存储在硬盘上的!

复习一下:硬盘(外存) 和 内存的 4 个区别(重点掌握):

  1. 内存存储空间小,硬盘存储空间大
  2. 内存访问速度快,硬盘访问速度慢
  3. 内存成本高,硬盘成本低
  4. 内存掉电数据丢失,硬盘掉电数据还在

文件也是被操作系统所管理,在操作系统内核中 有一个专门的模块 —— 文件系统(大概会以某种方式来管理硬盘上的文件) ~

在 Java 中针对 文件系统/文件 进行了一系列的封装,我们可以根据 Java API 对文件进行一些操作,专门提供了 File类,以表示一个文件 ~

然后,就可以基于 File类,来完成一些关于文件的操作 ~

2.1 File类的属性

修饰符及类型属性说明
static StringpathSeparator依赖于系统的路径分隔符,String 类型的表示
static charpathSeparator依赖于系统的路径分隔符,char 类型的表示

分隔符是 / 还是 \ ,暂时不需要纠结,因为平常我们暂时用不到 ~

 

2.2 File类的构造方法

构造方法说明
File (File parent,String  child)根据父目录 + 孩子文件路径,创建一个新的 File实例
File (String pathname)根据文件路径 创建一个新的 File实例,路径可以是绝对路径 也可以是相对路径
File (String parent,String  child)根据父目录 + 孩子文件路径,创建一个新的 File实例,父目录用路径表示

我们可以通过 构造方法 来基于一个路径,构造出一个文件 ~ 

 

2.3 File类的方法

2.3.1 File类的常用获取方法

修饰符及返回值类型方法说明
StringgetParent()返回 File对象 的父目录文件路径
StringgetName()返回 File对象 的纯文件名称
StringgetPath()返回 File对象 的文件路径
StringgetAbsolutePath()返回 File对象 的绝对路径
StringgetCanonicalPath()返回 File对象 的修饰过的绝对路径

2.3.2 File类的常用判断方法

修饰符及返回值类型方法说明
booleanexists()判断 File对象 描述的文件是否真实存在
booleanisDirectory()

判断 File对象 代表的文件是否是一个目录

booleanisAbsolute()

判断 File对象 代表的文件是否是绝对路径

booleanisFile()判断 File对象 代表的文件是否是一个普通文件
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

2.3.3 文件的创建与删除

修饰符及返回值类型方法说明
booleancreateNewFile()根据 File对象,自动创建一个空文件,成功创建后返回 true
booleandelete()根据 File对象,删除该文件,成功删除后返回 true
voiddeleteOnExit()根据 File对象,标注文件将被删除,删除动作会到 JVM 运行结束时才会进行
booleanmkdir()创建 File对象 代表的目录(单行目录)
booleanmkdirs()

创建 File对象 代表的目录(多行目录)

2.3.4 其他的常用方法

修饰符及返回值类型方法说明
String[ ]list()返回 File对象 代表的目录下的 所有文件名
File[ ]listFiles()返回 File对象 代表的目录下的所有文件,以 File对象表示
booleanrename(File dest)进行文件重命名

2.4 代码示例演示

2.4.1 演示一:演示File类的一些常见用法

package file;

import java.io.File;
import java.io.IOException;

//演示 file类 的一些常见用法
public class Demo1 {
    public static void main(String[] args) throws IOException {
        File file = new File("d:/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());
    }
}

运行结果:


 

package file;

import java.io.File;
import java.io.IOException;

//演示 file类 的一些常见用法
public class Demo1 {
    public static void main(String[] args) throws IOException {
        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());
    }
}

 运行结果:

2.4.2 演示二:文件的创建及其相关属性

package file;

import java.io.File;
import java.io.IOException;

public class Demo2 {
    public static void main(String[] args) throws IOException {
        //前面没有写 ./ ,但是也相当于是 相对路径,即 相当于是有 ./ (./ 可以省略)
        File file = new File("HelloWorld.txt");
        System.out.println("当前目录下,是否存在该文件:" + file.exists());
        System.out.println("判断其是否是目录:" + file.isDirectory());
        System.out.println("判断其是否是文件:" + file.isFile());
        System.out.println("--------------------------------------------------");
        //现在可以创建一个文件
        file.createNewFile();
        System.out.println("当前目录下,是否存在该文件:" + file.exists());
        System.out.println("判断其是否是目录:" + file.isDirectory());
        System.out.println("判断其是否是文件:" + file.isFile());
    }
}

 运行结果:


 此时,我们可以看见,程序运行结束后,创建了一个新的文件:

同时,当找到绝对路径去观察时,就会发现真的创建了一个文件:

2.4.3 演示三:文件的删除

第一种删除方法:delete 方法(直接删除)

package file;

import java.io.File;

public class Demo3 {
    public static void main(String[] args) {
        //文件删除
        File file = new File("HelloWorld.txt");
        file.delete();
        System.out.println(file.exists());
    }
}

运行结果:

我们可以看见,"HelloWorld.txt"文件就真的被删除了 ~

打开绝对路径的时候,文件确实被删除了 ~


第二种删除方法:deleteOnExit 方法(程序退出之后再删除,可以用来创建一些临时文件)

偷偷摸摸的又运行了一下 Demo2,以创建出文件 ~

我们可以看见,当运行到打印 文件是否存在 的时候,仍然是文件存在的 ~

当程序运行结束之后,文件才不存在被删除了 ~

同时,当打开绝对路径的时候,确实发现文件没有了 ~  

 

2.4.4 演示四:创建目录

如果我们创建的是单级目录的话,可以使用 mkdir 方法:

package file;

import java.io.File;

public class Demo4 {
    //创建目录
    public static void main(String[] args) {
        File file = new File("test");
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println("---------------------");
        file.mkdir();
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
    }
}

运行结果:

此时,可以观察到左边,真的创建了一个目录:

当打开绝对路径去观察时,也会发现真的出现了一个目录(文件夹):


当我们想要创建的是多级目录时,使用的就需要是 mkdirs 方法(如果继续使用 mkdir 方法,就会发现它是错误的)~

package file;

import java.io.File;

public class Demo4 {
    //创建目录
    public static void main(String[] args) {
        File file = new File("test/aa/1");
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println("---------------------");
        //file.mkdir();
        //创建多级目录的时候需要用的是 mkdirs 方法
        file.mkdirs();
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
    }
}

 运行结果:

同时,可以观察到左边创建了目录:

当打开绝对路径去观察时,也会发现创建了多级目录:

2.4.5 演示五:文件重命名

package file;

import java.io.File;

public class Demo5 {
    //文件重命名
    public static void main(String[] args) {
        File file1 = new File("./test1.txt");
        File file2 = new File("./test2.txt");
        file1.renameTo(file2);
    }
}

运行结果:

我们可以很清楚的看见,文件名 test1.txt 运行程序之后,重命名为了 test2.txt ~

好了,关于 文件操作和IO 的上半篇的内容就介绍到这里了,下半篇的内容就留到下一篇博客来介绍 ~

如果感觉这一篇博客对你有帮助的话,可以一键三连走一波,非常非常感谢啦 ~

 

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哎呀是小张啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值