📜  带有示例的Java中的文件 deleteIfExists() 方法(1)

📅  最后修改于: 2023-12-03 14:54:06.128000             🧑  作者: Mango

带有示例的Java中的文件 deleteIfExists() 方法

deleteIfExists() 方法是 Java 中 java.nio.file.Path 接口中的一个方法,用于删除指定路径的文件或目录。如果该路径不存在则直接返回 true。

方法签名
boolean deleteIfExists() throws IOException
参数说明

该方法不接受任何参数。

返回值说明
  • 返回 true 表示指定的路径对应的文件或目录存在且删除成功。
  • 返回 false 表示指定的路径对应的文件或目录不存在,或者存在但删除时发生异常。
示例代码

以下是一个使用 deleteIfExists() 方法删除指定目录及其下的所有文件和子目录的示例代码:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileDeleteExample {
    public static void main(String[] args) {
        Path directory = Paths.get("D:/example-directory");
        try {
            Files.walk(directory)
                 .sorted((a, b) -> b.compareTo(a))
                 .forEach(FileDeleteExample::deletePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void deletePath(Path path) {
        try {
            Files.deleteIfExists(path);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例代码中,我们首先定义了一个目录 D:/example-directory,然后使用 Files.walk() 方法遍历该目录及其子目录的所有文件和子目录,使用 Files.deleteIfExists() 方法删除每个文件和子目录。

需要注意的是,在使用 Files.walk() 方法遍历目录时,我们使用 sorted() 方法根据路径长度进行排序,确保我们先删除子目录再删除父目录,避免遇到无法删除父目录的情况。

总结

deleteIfExists() 方法是 Java 中 java.nio.file.Path 接口的一个方法,用于删除指定路径的文件或目录。在实际使用中,我们可以结合 Files.walk() 方法遍历目录及其子目录,使用 Files.deleteIfExists() 方法删除目录中的所有文件和子目录。