在Java中递归删除目录有没有办法在Java中递归删除整个目录?在正常情况下,可以删除空目录。但是,当要删除包含内容的整个目录时,它就不再那么简单了。如何用Java中的内容删除整个目录?
3 回答
婷婷同学_
TA贡献1844条经验 获得超8个赞
ABOUTYOU
TA贡献1812条经验 获得超5个赞
使用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);}
饮歌长啸
TA贡献1951条经验 获得超3个赞
在Java 7+中,您可以使用Files
类。代码很简单:
Path directory = Paths.get("/tmp");Files.walkFileTree(directory, 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; }});
添加回答
举报
0/150
提交
取消