JAVA IO - 删除文件或文件夹的7种方法
@Test
void testDeleteFileDir1() {
File file = new File("D:\data\test");
boolean deleted = file.delete();
System.out.println(deleted);
}
@Test
void testDeleteFileDir2() {
File file = new File("D:\data\test1");
file.deleteOnExit();
}
@Test
void testDeleteFileDir3() throws IOException {
Path path = Paths.get("D:\data\test1");
Files.delete(path);
}
@Test
void testDeleteFileDir4() throws IOException {
Path path = Paths.get("D:\data\test1");
boolean result = Files.deleteIfExists(path);
System.out.println(result);
}
private void createMoreFiles() throws IOException {
Files.createDirectories(Paths.get("D:\data\test1\test2\test3\test4\test5\"));
Files.write(Paths.get("D:\data\test1\test2\test2.log"), "hello".getBytes());
Files.write(Paths.get("D:\data\test1\test2\test3\test3.log"), "hello".getBytes());
}
@Test
void testDeleteFileDir5() throws IOException {
createMoreFiles();
Path path = Paths.get("D:\data\test1\test2");
Files.walkFileTree(path,
new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
Files.delete(file);
System.out.printf("文件被删除 : %s%n", file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir,
IOException exc) throws IOException {
Files.delete(dir);
System.out.printf("文件夹被删除: %s%n", dir);
return FileVisitResult.CONTINUE;
}
}
);
}
@Test
void testDeleteFileDir6() throws IOException {
createMoreFiles();
Path path = Paths.get("D:\data\test1\test2");
try (Stream<Path> walk = Files.walk(path)) {
walk.sorted(Comparator.reverseOrder())
.forEach(DeleteFileDir::deleteDirectoryStream);
}
}
private static void deleteDirectoryStream(Path path) {
try {
Files.delete(path);
System.out.printf("删除文件成功:%s%n",path.toString());
} catch (IOException e) {
System.err.printf("无法删除的路径 %s%n%s", path, e);
}
}
@Test
void testDeleteFileDir7() throws IOException {
createMoreFiles();
File file = new File("D:\data\test1\test2");
deleteDirectoryLegacyIO(file);
}
private void deleteDirectoryLegacyIO(File file) {
File[] list = file.listFiles();
if (list != null) {
for (File temp : list) {
deleteDirectoryLegacyIO(temp);
}
}
if (file.delete()) {
System.out.printf("删除成功 : %s%n", file);
} else {
System.err.printf("删除失败 : %s%n", file);
}
}