Java中的File类及其常用方法详解

〇. File类的一些前置知识

在这里插入图片描述

一, 如何实例化一个File类对象

  • Java中提供了四种不同参数列表的构造器来实例化一个File类对象:

在这里插入图片描述
[举个栗子]

@Test
    public void fileTest(){
    
    
        //1. 使用代表路径的字符串创建File类对象
        // new File("e:\\parentDirectory\\res.txt");
        String pathName = "e:\\parent1\\parent11\\res.txt";
        File file_1 = new File(pathName);
        
        //2. 使用父类路径的字符串, 拼接上子类路径字符串, 创建一个文件对象
        // new File("e:\\parent1\\parent2", "res.txt");
        String parent = "e:\\parent2\\parent22";
        String child = "res.txt";
        File file_2 = new File(parent, child);

        //3. 使用父类的文件类对象, 拼接子类字符串, 创建一个文件对象
        File file_parent = new File("e:\\parent3");
        String child_3 = "\\parent33\\res.txt";
        File file_3 = new File(file_parent, child_3);

        //输出文件类对象的路径
        //直接输出file类对象, 输出的就是file代表的文件绝对路径
        System.out.println("file1的路径: "+file_1);
        System.out.println("file2的路径: "+file_2);
        System.out.println("file3的路径: "+file_3);
    }
# 输出结果
file1的路径: e:\parent1\parent11\res.txt
file2的路径: e:\parent2\parent22\res.txt
file3的路径: e:\parent3\parent33\res.txt

二, File类的几个常用方法

构造一个File对象,并不会导致任何磁盘操作。只有当我们调用File对象的某些方法的时候,才真正进行磁盘操作

2.1 创建和重命名文件的方法

  • 使用上面讲到的File类构造器去实例化一个File类, 仅仅是在内存中创建了这个对象, 只有当File类对象调用下面的方法才是真正的在磁盘上创建一个文件或文件目录;
方法 用途
boolean createNewFile() 创建文件, 若文件存在则不创建, 返回false;
boolean mkdir() 创建一级文件目录, 如果此文件目录存在, 或此文件目录的父目录不存在, 则返回false;
boolean mkdirs() 创建多级目录, 如果父目录不存在, 一并创建之
boolean renameTo(File dst) 重命名文件或剪切文件, file对象. renameTo(file对象2)

注意: 如果在创建文件或文件目录时, 没有写盘符路径, 默认在项目路径下进行创建;

[举个栗子]

public void createTest(){
    
    
        //创建文件和目录
        /**
         * 1. boolean createNewFile();
         * 2. boolean mkdir()
         * 3. boolean mkdirs()
         */

        //1. 使用代表路径的字符串创建File类对象
        // new File("e:\\parentDirectory\\res.txt");
        //String pathName = "e:\\parent1\\parent11\\res.txt";--> 这种会报错, 因为res.txt前面的目录还不存在呢!
        String pathName = "e:\\res.txt";
        File file_1 = new File(pathName);

        try {
    
    
            //boolean newFile = file_1.createNewFile();

            if(file_1.createNewFile()){
    
    
                System.out.println("文件创建成功!");
            }

        } catch (IOException e) {
    
    
            System.out.println("文件创建失败! ");
            e.printStackTrace();
        }

        //2. 创建多级目录
        //使用代表路径的字符串创建File类对象
        // new File("e:\\parentDirectory\\res.txt");
            // 注意这里, 不会出现res.txt哦, mkdirs仍旧把res.txt看成一个目录名
        String pathName1 = "e:\\parent1\\parent11\\res.txt";
        File file_2 = new File(pathName1);

        if(file_2.mkdirs()){
    
    
            System.out.println("创建目录成功!");
        }else{
    
    
            System.out.println("创建目录失败!");
        }

        //3. 创建_一级目录
        File file_3 = new File("e:\\parent");
        file_3.mkdir()
    }
 		
 		//4. 重命名文件或剪切文件
        // file对象1.renameTo(file对象2);
        String pathName_4 = "e:\\res.txt";
        File file_4 = new File(pathName);
        File file_5 = new File("e:\\res_5.txt");
        file_4.renameTo(file_5);

2.2 删除文件的方法

方法 说明
boolean delete() 删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。
void deleteOnExit() jvm退出时删除文件或者文件夹,用于删除临时文件,无返回值。

2.3 判断文件的方法

方法 说明
boolean exists() 文件或文件夹是否存在。
boolean isFile() 是否是一个文件,如果不存在,则始终为false。
boolean isDirectory() 是否是一个目录,如果不存在,则始终为false
boolean isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
boolean canRead(); 判断是否可读
boolean canWrite(); 判断是否可写

2.4 获取文件相关属性的方法

方法 说明
getName() 获取文件或文件夹的名称,不包含上级路径。
length() 获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
boolean isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
getAbsolutePath() 获取文件的绝对路径,与文件是否存在没关系
lastModified(); 获取最后一次被修改的时间。

2.5 文件目录的相关方法

方法 说明
static File[] listRoots() 列出所有的根目录(Window中就是所有系统的盘符)。
list() 回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
listFiles() 返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
list(FilenameFilter filter) 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
listFiles(FilenameFilter filter 返回指定当前目录中符合过滤条件的子文件或子目录。对于文件这样操作会返回null。
  • 参考文章:
  • 1
  • https://www.runoob.com/java/java-file.html
  • https://www.cjavapy.com/article/1631/

三, 扩展: 如何创建多级目录下的一个文件 ?

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nmsLLCSDN/article/details/121873450