/**
* @author ycw
* @version v1.0
* @date 2022/3/17 16:15
* @description
*/
public class TestFilesWalkFileTree {
public static void main(String[] args) throws IOException {
Files.walkFileTree(Paths.get("E:\\test"),new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
//遍历文件时删除文件
Files.delete(file);
return super.visitFile(file, attrs);
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
//遍历目录时删除目录
Files.delete(dir);
return super.postVisitDirectory(dir, exc);
}
});
}
如果是非空文件夹我们直接调用Files.delete方法会报文件夹非空异常,所以必须递归先把文件夹底下所有文件删除,包括删除这个文件夹内部包含的子文件夹,然后才能删除这个文件夹,使用Files.walkFileTree就可以很优雅的解决问题。第一步在遍历文件时候先把文件删除,然后再退出文件夹后删除这个空文件夹就可以了。