解决当前问题的方法:
但是实现一个visitFileFailed,您应该可以。
public class MyFileVisitor extends SimpleFileVisitor<Path> { @Override public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { if (file.toString().endsWith(".tar")) { return FileVisitResult.CONTINUE; } return super.visitFileFailed(file, exc); }}更新:如果我们仔细观察,可以看到walkFileTree使用Files.readAttributes
,该文件转向正在使用的当前提供程序:WindowsFileSystemProvider.readAttributes来确定路径是否为目录。
正如评论中提到的那样,我也不认为错误在于Java实现,而是OS本地调用返回错误的属性
如果要解决此问题,一种选择是实现自己的文件系统,该文件系统透明地包装WindowsFileSystem实现,但readAttributes返回.tar-
paths作为文件而不是dir。



