您的位置:

了解Java File类的常用方法

一、File类概述

Java中的File类是一个非常实用的类,它代表了一个文件或目录的路径名。使用File类,你可以对文件或目录进行创建、删除、重命名、遍历等操作。在使用File类之前,你需要引入java.io包。

二、File类常用方法

1. File构造函数

File(String pathname):通过给定的路径名字符串创建一个新File实例。
File(String parent, String child):根据父路径和子路径字符串创建一个新File实例。
File(File parent, String child):根据父路径和子路径名字创建一个新File实例。

2. 文件或目录的常用操作

2.1 创建文件或目录
boolean createNewFile():创建一个新的空文件,如果文件已经存在,则不会创建,返回false。
boolean mkdir():创建一个新目录,如果目录已经存在,则不会创建,返回false。
boolean mkdirs():创建一个新目录和其所有父目录,如果目录已经存在,则不会创建,返回false。
2.2 删除文件或目录
boolean delete():删除文件或目录。如果是一个目录,则该目录必须为空目录才能被删除。
void deleteOnExit():在VM退出时删除文件或目录。
2.3 重命名文件或目录
boolean renameTo(File dest):重命名文件或目录。当目标文件或目录已经存在时,将覆盖它。
2.4 判断文件或目录的存在性和属性
boolean exists():判断文件或目录是否存在。
boolean isDirectory():判断是否为目录。
boolean isFile():判断是否为文件。
boolean canRead():判断文件或目录是否可读。
boolean canWrite():判断文件或目录是否可写。
boolean isHidden():判断文件或目录是否是隐藏文件或目录。
long lastModified():返回文件或目录最后修改时间戳(自1970年1月1日00:00:00 GMT起的秒数)。
long length():返回文件的长度。

3. 文件或目录的遍历

3.1 获取文件或目录列表
String[] list():获取该目录下的所有文件和目录的名称字符串数组。
File[] listFiles():获取该目录下的所有文件和目录的File对象数组。
File[] listFiles(FilenameFilter filter):获取该目录下符合指定过滤器的所有文件和目录的File对象数组。
File[] listFiles(FileFilter filter):获取该目录下满足指定过滤器的所有文件和目录的File对象数组。
3.2 文件或目录的遍历
List getFiles(File file, List
    fileList):递归获取目录下所有文件的File对象,并加入到fileList集合中。

   
  

三、File类完整示例代码

import java.io.*;

public class FileDemo {
    public static void main(String[] args) throws IOException {
        // 构造函数示例
        File file1 = new File("test.txt"); // 相对路径,当前工作目录
        File file2 = new File("/Users/username/test.txt"); // 绝对路径
        File file3 = new File("/Users/username", "test.txt"); // 父路径+子路径
        File file4 = new File(new File("/Users/username"), "test.txt"); // File对象和子路径

        // 文件或目录的常用操作示例
        file1.createNewFile();
        file2.mkdirs();
        file3.delete();
        file4.renameTo(new File("/Users/username/newname.txt"));

        // 判断文件或目录的存在性和属性示例
        System.out.println(file1.exists());
        System.out.println(file2.isDirectory());
        System.out.println(file2.canRead());
        System.out.println(file3.isFile());
        System.out.println(file3.canWrite());

        // 文件或目录的遍历示例
        File[] fileList = new File("/Users/username").listFiles();
        for (File file : fileList) {
            System.out.println(file.getName());
        }
        List allFiles = new ArrayList<>();
        getFiles(new File("/Users/username"), allFiles);
        for (File file : allFiles) {
            System.out.println(file.getAbsolutePath());
        }
    }

    public static void getFiles(File file, List
    fileList) {
        // 如果是文件夹,递归获取子文件
        if (file.isDirectory()) {
            File[] subFiles = file.listFiles();
            for (File subFile : subFiles) {
                getFiles(subFile, fileList);
            }
        } else {
            fileList.add(file);
        }
    }
}