• Java_File 文件类 整理详解(求求了进来看看)


    前言

    博主将用 CSDN 记录 Java 后端开发学习之路上的经验,并将自己整理的编程经验和知识分享出来,希望能帮助到有需要的小伙伴。
    博主也希望和一直在坚持努力学习的小伙伴们共勉!唯有努力钻研,多思考勤动手,方能在编程道路上行至所向。
    由于博主技术知识有限,博文中难免会有出错的地方,还望各位大佬包涵并批评指正,博主会及时改正;如果本文对小伙伴你有帮助的话,求求给博主一个赞支持一下,可以一起交流,一起加油!!

    1. File(文件类)概述

    文件是保存数据的地方,比如大家经常使用的 word 文档,txt 文件,excel 文件等都属于文件,文件既可以保存一张图片,也可以保存视频、声音。
    在 Java 程序中,文件是以“流”的形式来操作的,如下图所示:

    在这里插入图片描述

    (1)将磁盘的文件中的数据读取到 Java 程序中,这个过程称为 输入;
    (2)从 Java 程序中将数据写入到磁盘的文件中,这个过程称为 输出;

    2. File 对象的创建

    在计算机系统中,文件是非常重要的存储方式。Java 的标准库 java.io 提供了 File 类的对象来操作文件和目录。

    在 Java 程序中,我们创建一个 File 对象时需要提供一个抽象文件路径名,之所以叫做 抽象,是因为在创建该 File 对象时,提供的文件路径是在 Java 程序中声明的,而此时磁盘中并不一定存在该文件路径。

    2.1 绝对路径 vs 相对路径

    • 补充:绝对路径 vs 相对路径

    (1)绝对路径:是一个固定的文件路径,从盘符号开始声明,如:“e:\news1.txt”。
    (2)相对路径:是相对于某个位置开始声明的文件路径,在 Java 程序中:

    • main()方法中的相对路径是相对于当前项目;
    • 单元测试方法中的相对路径是相对于当前模块;

    2.2 文件路径分隔符

    (1)文件路径中的每级目录之间都会用一个路径分隔符隔开。
    (2)默认的路径分隔符和操作系统有关:

    • windows 和 dos 系统默认使用 “\” 来分隔;
    • Linux、Unix 和 URL 使用 “/” 来分隔;

    (3)Java 程序支持跨平台运行,因此路径分隔符需要动态设置,File 类提供了一个静态常量,可以根据 Java 程序运行在不同的操作系统,动态地提供路径分隔符。如下:

    • public static final String separator

    代码演示:

    File file1 = new File("d:" + File.separator + "aaa.txt");
    
    // 在 windows 中,会自动转为 “\\”
    File file2 = new File("d:\\aaa.txt");
    
    // 在 Linux 中,会自动转为 “/”
    File file3 = new File("d:/aaa.txt");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.3 创建 File 对象

    创建一个 File 类对象可以使用 File 类提供的 3 种构造器方法,这 3 种构造器分别传入不同的抽象文件路径名,该路径名是以字符串形式表示的。用法如下:

    方式一:public File(String pathname)
    根据文件路径名(可以是绝对路径也可以是相对路径)创建一个 File 对象,如果 pathname 是相对路径,则默认的当前路径在系统属性 user.dir 中存储;

    • 代码演示:
    String filePath = "e:\\news1.txt";// 文件路径名
    File file = new File(filePath);// 创建 File 对象
    
    • 1
    • 2

    方式二:public File(String parent, String child)
    根据父目录文件(File 对象)和文件路径名创建一个 File 对象;

    • 代码演示:
    File parentFile = new File("e:\\");// 先创建了一个 File 对象
    String fileName = "news2.txt";// 这只是个文件路径名
    File file = new File(parentFile, fileName);
    
    • 1
    • 2
    • 3

    方式三:public File(File parent, String child)
    根据父目录路径名和文件路径名创建一个 File 对象;

    • 代码演示:
    String parentPath = "e:\\";
    String fileName = "news4.txt";// 上面的两个都是文件路径名
    File file = new File(parentPath, fileName);// 真正创建 File 对象
    
    • 1
    • 2
    • 3
    • 特别注意:上面声明的抽象文件路径名和创建的 File 对象,只是在 Java 程序中存在的,并未在磁盘中创建该文件。

    3. File 对象的常用方法

    File 对象既可以表示文件,也可以表示目录。 特别要注意的是,创建一个 File 对象时,即使提供的抽象文件路径名在磁盘中不存在,代码也不会出错,因为创建一个File 对象,并不会导致任何磁盘操作。只有当我们调用 File 对象的某些方法的时候,才会真正进行磁盘操作。

    3.1 磁盘操作的方法

    在调用下面方法时,会真正在磁盘中产生操作,将 Java 内存中的 File 对象与磁盘中的文件产生联系。
    如下表所示:

    方法功能
    public boolean exists()判断传入的抽象路径名(目录/文件)在磁盘中是否存在
    public boolean isFile()判断传入的抽象路径名是否是一个在磁盘中已存在的文件
    public boolean isDirectory()判断传入的抽象路径名是否是一个在磁盘中已存在的目录
    public boolean createNewFile()在磁盘中创建文件。若文件已存在,则不创建,返回 false
    public boolean mkdir()在磁盘中创建文件目录。如果此文件目录已存在,则不创建。如果此文件目录为未存在的多级文件目录,也不能创建
    public boolean mkdirs()在磁盘中一次性创建多级文件目录
    public boolean delete()从磁盘中删除指定文件路径下的文件或者文件目录

    注意: 如果要删除一个文件目录,要保证该文件目录为空目录,即不能一次性删除多级目录。

    代码演示:

    @Test
    public void test() throws IOException {
        // 创建一个文件类对象,并传入一个抽象文件路径名
        // 传入的抽象路径名在磁盘中可能存在也可能不存在
        String pathname = "d:\\new4";
        File file = new File(pathname);
            
        // 判断传入的抽象路径名(目录/文件)在磁盘中是否存在
        System.out.println(file.exists());// false
    
    	// 如果传入的抽象路径名(目录/文件)在磁盘中不存在
    	// 需要注意的是:创建的是一个文件还是目录由方法决定且只能二者选其一,和文件后缀无关
     	if (!(file.exists())) {
            // file.createNewFile();// 在磁盘中指定路径下创建文件
            file.mkdirs();// 在磁盘中指定路径下创建目录
        }
    
        // 再次判断传入的抽象路径名(目录/普通文件)在磁盘中是否存在
        System.out.println(file.exists());// true
    
        // 判断传入的抽象路径名是否是一个在磁盘中已存在的文件
        System.out.println(file.isFile());// false
            
        // 判断传入的抽象路径名是否是一个在磁盘中已存在的目录
        System.out.println(file.isDirectory());// true
    
    	// 从磁盘中删除指定文件路径下的文件或者文件目录
        file.delete();
            
        System.out.println(file.exists());// false
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    输出如下:

    在这里插入图片描述

    3.2 获取文件属性的方法

    在调用下面方法时,不会真正地在磁盘中操作,只是操作 Java 内存中的 File 对象,获取 File 对象的一些属性。

    如下表所示:

    方法功能
    public String getAbsolutePath()返回传入的抽象路径名的绝对路径名字符串
    public String getPath()将传入的抽象路径名转换为一个路径名字符串,并返回(传入什么就是什么)
    public String getParent()返回传入的抽象路径名的父路径名的路径名字符串(即最后一个分隔符前的路径)。如果此路径名没有指定父目录,则返回 null
    public String getName()返回传入的抽象路径名的最后一个子文件名(即最后一个分隔符后的路径)

    注意: 如果声明的抽象文件路径名没有盘符路径,则该文件的绝对路径默认是在项目路径/模块路径下。

    带盘符路径的代码演示:

    @Test
    public void test() throws IOException {
    	// 创建一个文件类对象,并传入一个抽象文件路径名
    	// 传入的抽象路径名在磁盘中可能存在也可能不存在
    	// 但可以调用 File 类的下面方法获取该文件的属性
    	String pathname = "d:\\new4";
        File file = new File(pathname);
            
        // 返回传入的抽象路径名的绝对路径名字符串
        System.out.println(file.getAbsolutePath());
    
        // 将传入的抽象路径名转换为一个路径名字符串,并返回(传入什么就是什么)
        System.out.println(file.getPath());
    
        // 返回传入的抽象路径名的父路径名的路径名字符串(即最后一个分隔符前的路径)。
        // 如果此路径名没有指定父目录,则返回 null
        System.out.println(file.getParent());
    
        // 返回传入的抽象路径名的最后一个子文件名(即最后一个分隔符后的路径)
        System.out.println(file.getName());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    输出如下:

    在这里插入图片描述

    不带盘符路径的代码演示:

    public class Test_ {
        public static void main(String[] args) {
    		// 在 main 方法中,声明的抽象文件路径名没有盘符路径,则文件的绝对路径默认是在项目路径下;
    		// 在 @Text 测试中,声明的抽象文件路径名没有盘符路径,则文件的绝对路径默认是在模块路径下;
            String pathname = "new4";
            File file = new File(pathname);
    
            System.out.println(file.getAbsolutePath());
    
            System.out.println(file.getPath());
    
            System.out.println(file.getParent());
    
            System.out.println(file.getName());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    main 方法输出如下:

    在这里插入图片描述

    @Test 测试输出如下:

    在这里插入图片描述

  • 相关阅读:
    竞赛第9期
    概率论重点笔记
    重启Oracle数据库命令列表逐步操作
    JAVA毕业设计酒店员工管理系统计算机源码+lw文档+系统+调试部署+数据库
    关于 Invalid bound statement (not found): 错误的解决
    Milvus 2.2 版本发布!
    10分钟了解Flink SQL使用
    服务器创建虚拟环境跑代码
    安卓系统架构
    Web开发介绍,制作小网站流程和需要的技术【详解】
  • 原文地址:https://blog.csdn.net/weixin_45395059/article/details/126002859