📜  使用Java删除文件(1)

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

使用Java删除文件

Java 提供了一些方法来删除文件。本文将介绍如何使用 Java 删除文件。

Java 删除文件方法

可以使用以下方法之一来删除文件。

File.delete()

这个方法是 java.io.File 类的方法。它将给定的文件或目录删除。如果调用这个方法的对象不是一个目录,那么它将只删除文件。

以下是删除文件的基本语法:

File file = new File("C:\\file.txt");
if(file.delete()) {
    System.out.println(file.getName() + " is deleted!");
} else {
    System.out.println("Delete operation is failed.");
}
Files.delete()

这个方法是 java.nio.file.Files 类的方法。它将给定的文件或目录删除。它比 File.delete() 更可靠,因为它保证在删除文件或目录时产生异常的情况下抛出异常。

以下是删除文件的基本语法:

Path file = Paths.get("C:\\file.txt");
try {
    Files.delete(file);
    System.out.println(file.getFileName() + " is deleted!");
} catch (IOException e) {
    System.err.println("Failed to delete file: " + e.getMessage());
}
使用Java删除非空目录

如果要删除非空目录,可以使用以下方法之一。

File.delete() 和递归方法

可以使用递归方法来删除目录中的所有文件和子目录。

以下是删除目录的基本语法:

public static void deleteDirectory(File path) {
    if (path.exists()) {
        File[] files = path.listFiles();
        if (files == null) {
            throw new RuntimeException("Failed to list files in the directory: " + path);
        }
        for (File file : files) {
            if (file.isDirectory()) {
                deleteDirectory(file);
            } else {
                if (!file.delete()) {
                    throw new RuntimeException("Failed to delete file: " + file);
                }
            }
        }
        if (!path.delete()) {
            throw new RuntimeException("Failed to delete directory: " + path);
        }
    }
}
Files.walkFileTree()

Java 7 引入了一个新的方法,Files.walkFileTree(),它可用于删除目录中的所有文件和子目录。

以下是删除目录的基本语法:

Path path = Paths.get("C:\\directory");
try {
    Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
        @Override
        public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
            Files.delete(file);
            return FileVisitResult.CONTINUE;
        }

        @Override
        public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
            Files.delete(dir);
            return FileVisitResult.CONTINUE;
        }
    });
    System.out.println(path.getFileName() + " is deleted!");
} catch (IOException e) {
    System.err.println("Failed to delete directory: " + e.getMessage());
}
总结

Java 提供了多种删除文件的方法,可以根据自己的需要来选择合适的方法。当删除非空目录时,需要使用递归方法或 Files.walkFileTree() 方法来删除所有文件和子目录。