我目前正试图递归删除一个目录... 奇怪的是,我能找到的最短的代码片段是以下结构,使用了一个临时内部类和一个访问者模式...
Path rootPath = Paths.get("data/to-delete");
try {
Files.walkFileTree(rootPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("delete file: " + file.toString());
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
Files.delete(dir);
System.out.println("delete dir: " + dir.toString());
return FileVisitResult.CONTINUE;
}
});
} catch(IOException e){
e.printStackTrace();
}
来源:这里
考虑到新的nio
API可以去除大量冗余和样板文件,这种方法感觉非常笨拙且繁琐...
是否有更简洁的方式来强制递归删除目录?
我正在寻找纯本地Java 1.8方法,请不要链接到外部库...
Files.walk
不会给你这个机会。 - TunakiFiles.deleteRecursively(Path)
这样的东西,或者可能一些可选标志? - fgysinFiles.list
进行递归处理,但这与您拥有的解决方案相同,我更喜欢您的解决方案。 - Tunaki