直接使用Files.deleteIfExists()方法会在文件夹非空时抛出DirectoryNotEmptyException异常。
因此使用walk方法将文件夹下文件及文件夹删除,避免使用递归方法,展现优雅。
String root = "./examplePath";
Files.walkFileTree(Paths.get(root), new SimpleFileVisitor<Path>(){
// 先去遍历删除文件
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
Files.delete(file);
logger.info("文件被删除 : {}", file);
return FileVisitResult.CONTINUE;
}
// 再去遍历删除目录
@Override
public FileVisitResult postVisitDirectory(Path dir,
IOException exc) throws IOException {
Files.delete(dir);
logger.info("文件夹被删除: {}", dir);
return FileVisitResult.CONTINUE;
}
});
Files.deleteIfExists(Paths.get(root));