📅  最后修改于: 2023-12-03 14:49:48.473000             🧑  作者: Mango
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());
}
如果要删除非空目录,可以使用以下方法之一。
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()
方法来删除所有文件和子目录。