Java File类

2022-08-31  本文已影响0人  Tinyspot

1. File 类

概念:代表物理盘符中的一个文件或文件夹

2. 文件操作

2.1 分隔符

    // 路径分隔符 windows 分号;Macbook 冒号
    System.out.println(File.pathSeparator);
    // 名称分隔符 windows 反斜杠; Macbook 正斜杠
    System.out.println(File.separator);

2.2 文件操作

创建文件

    // 创建文件对象,实际还未创建文件
    File file = new File("src/main/resources/demo.txt");
    // 真正创建文件
    boolean newFile = file.createNewFile();
    System.out.println("不存在就创建,存在就不创建:" + newFile);
    // 可以加个判断
    if (!file.exists()) {
        // file.createNewFile();
    }

删除文件

    File file = new File("src/main/resources/demo.txt");
    // 方式一:直接删除
    System.out.println("是否删除成功:" + file.delete());
    // 方式二:JVM 退出时删除
    file.deleteOnExit();
    Thread.sleep(3000);

2.3 获取文件信息

    File file = new File("src/main/resources/demo.txt");
    file.createNewFile();
    System.out.println("绝对路径:" + file.getAbsolutePath());
    System.out.println("相对路径:" + file.getPath());
    System.out.println("文件名称:" + file.getName());
    System.out.println("父目录:" + file.getParent());
    System.out.println("文件长度:" + file.length());
    System.out.println("创建时间:" + new Date(file.lastModified()).toLocaleString());

文件权限信息

    File file = new File("src/main/resources/demo.txt");
    System.out.println("是否可写:" + file.canWrite());
    System.out.println("是否文件:" + file.isFile());
    System.out.println("是否隐藏:" + file.isHidden());

3. 文件夹操作

3.1 创建目录

    File dir = new File("src/main/resources/dir");
    if (!dir.exists()) {
        // dir.mkdir(); // 只能创建单级目录
        System.out.println("是否创建成功:" + dir.mkdirs());
    }

3.2 删除目录

    File dir = new File("src/main/resources/dir");
    // 方式一:直接删除,注意:只能删除空目录
    boolean delete = dir.delete();
    // 方式二:JVM 退出时删除
    dir.deleteOnExit();
    Thread.sleep(3000);

3.3 获取目录信息

    File dir = new File("src/main/resources/dir");
    System.out.println(dir.getAbsolutePath() + "; " + dir.getPath());

    System.out.println("是否文件夹:" + dir.isDirectory());
    System.out.println("是否隐藏:" + dir.isHidden());

3.4 遍历

普通查询

    File dir = new File("src/main/resources");
    String[] list = dir.list();
    File[] files = dir.listFiles();

递归遍历

public static void main(String[] args) throws Exception {
    File file = new File("src/main/resources");
    fileIterator(file);
}

public static void fileIterator(File fileDir) {
    File[] files = fileDir.listFiles();
    if (files == null || files.length == 0) {
        return;
    }
    for (File file : files) {
        if (file.isDirectory()) {
            fileIterator(file);
        } else {
            System.out.println(file.getAbsolutePath());
        }
    }
}

递归删除

public static void main(String[] args) throws Exception {
    File file = new File("src/main/resources/dir");
    deleteDir(file);
}

public static void deleteDir(File fileDir) {
    File[] files = fileDir.listFiles();
    if (files == null) {
        return;
    }
    // 先删除文件
    for (File file : files) {
        if (file.isDirectory()) {
            deleteDir(file);
        } else {
            System.out.println(file.getAbsolutePath() + " 被删除:" + file.delete());
        }
    }
    // 再删除目录
    System.out.println(fileDir.getAbsolutePath() + "被删除:" + fileDir.delete());
}

4. 文件过滤器(FileFilter)

public class File implements Serializable, Comparable<File> {
    public File[] listFiles(FileFilter filter) {}
}
@FunctionalInterface
public interface FileFilter {
    boolean accept(File pathname);
}

示例:

    File file = new File("src/main/resources");
    File[] files = file.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            if (pathname.getName().endsWith(".txt")) {
                return true;
            }
            return false;
        }
    });
上一篇下一篇

猜你喜欢

热点阅读