Java nio - 无法删除已清空的目录

Bob*_*r02 5 java io nio

我正在尝试遍历文件树并删除所有文件/目录.代码如下:

        Files.walkFileTree(metricPath, 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 {
                if (exc == null) {
                    Files.delete(dir);
                    return FileVisitResult.CONTINUE;
                } else {
                    throw exc;
                }
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

此代码在单元测试之间运行,每个单元测试都在表单中生成一个单独的文件folder1/folder2/file.当我尝试走这棵树时,DirectoryNotEmptyException当folder1试图被删除时抛出了它,尽管它显然是空的......

Arc*_*her 0

您检查过该目录中是否有隐藏文件吗?在 Windows 上,可能某些进程已打开此目录,并且打开的文件 HANDLE 仍然存在于系统 HANDLE 表中。在这种情况下,目录被锁定,java 可能会抛出该异常。