【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 运行程序的时候,当前的工作目录(取为基准路径)就是项目所在的目录 ~

【JavaEE初阶】文件操作 和 IO (上篇)_第1张图片

二、 Java中文件系统操作

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

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

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

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

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

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

2.1 File类的属性

修饰符及类型 属性 说明
static String pathSeparator 依赖于系统的路径分隔符,String 类型的表示
static char pathSeparator 依赖于系统的路径分隔符,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类的常用获取方法

修饰符及返回值类型 方法 说明
String getParent() 返回 File对象 的父目录文件路径
String getName() 返回 File对象 的纯文件名称
String getPath() 返回 File对象 的文件路径
String getAbsolutePath() 返回 File对象 的绝对路径
String getCanonicalPath() 返回 File对象 的修饰过的绝对路径

2.3.2 File类的常用判断方法

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

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

boolean isAbsolute()

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

boolean isFile() 判断 File对象 代表的文件是否是一个普通文件
boolean canRead() 判断用户是否对文件有可读权限
boolean canWrite() 判断用户是否对文件有可写权限

2.3.3 文件的创建与删除

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

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

2.3.4 其他的常用方法

修饰符及返回值类型 方法 说明
String[ ] list() 返回 File对象 代表的目录下的 所有文件名
File[ ] listFiles() 返回 File对象 代表的目录下的所有文件,以 File对象表示
boolean rename(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());
    }
}

运行结果:

【JavaEE初阶】文件操作 和 IO (上篇)_第2张图片


 

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());
    }
}

 运行结果:

【JavaEE初阶】文件操作 和 IO (上篇)_第3张图片

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());
    }
}

 运行结果:


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

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

【JavaEE初阶】文件操作 和 IO (上篇)_第4张图片

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"文件就真的被删除了 ~

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

【JavaEE初阶】文件操作 和 IO (上篇)_第5张图片


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

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

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

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

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

【JavaEE初阶】文件操作 和 IO (上篇)_第6张图片

 

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());
    }
}

运行结果:

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

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

【JavaEE初阶】文件操作 和 IO (上篇)_第7张图片


当我们想要创建的是多级目录时,使用的就需要是 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());
    }
}

 运行结果:

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

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

【JavaEE初阶】文件操作 和 IO (上篇)_第8张图片

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 的上半篇的内容就介绍到这里了,下半篇的内容就留到下一篇博客来介绍 ~

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

【JavaEE初阶】文件操作 和 IO (上篇)_第9张图片

 

你可能感兴趣的:(JavaEE初阶,文件操作,文件IO,输入输出流,File类)