在Java中递归删除目录

在Java中递归删除目录

有没有办法在Java中递归删除整个目录?

在正常情况下,可以删除空目录。但是,当要删除包含内容的整个目录时,它就不再那么简单了。

如何用Java中的内容删除整个目录?


小怪兽爱吃肉
浏览 554回答 3
3回答

婷婷同学_

你应该查看Apache的commons-io。它有一个FileUtils类,可以做你想要的。FileUtils.deleteDirectory(new File("directory"));

ABOUTYOU

使用Java 7,我们最终可以通过可靠的符号链接检测来实现这一点。(我不认为Apache的commons-io目前有可靠的符号链接检测,因为它不处理用Windows创建的链接mklink。)为了历史,这里是一个Java 7之前的答案,它遵循符号链接。void delete(File f) throws IOException {   if (f.isDirectory()) {     for (File c : f.listFiles())       delete(c);   }   if (!f.delete())     throw new FileNotFoundException("Failed to delete file: " + f);}

饮歌长啸

在Java 7+中,您可以使用Files类。代码很简单:Path&nbsp;directory&nbsp;=&nbsp;Paths.get("/tmp");Files.walkFileTree(directory,&nbsp;new&nbsp;SimpleFileVisitor<Path>()&nbsp;{ &nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;public&nbsp;FileVisitResult&nbsp;visitFile(Path&nbsp;file,&nbsp;BasicFileAttributes&nbsp;attrs)&nbsp;throws&nbsp;IOException&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Files.delete(file); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;FileVisitResult.CONTINUE; &nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;public&nbsp;FileVisitResult&nbsp;postVisitDirectory(Path&nbsp;dir,&nbsp;IOException&nbsp;exc)&nbsp;throws&nbsp;IOException&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Files.delete(dir); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;FileVisitResult.CONTINUE; &nbsp;&nbsp;&nbsp;}});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java