我的 Java 代码遍历计算机的根目录以创建文件夹树(用作 Web 应用程序的 json)
for (Path path : FileSystems.getDefault().getRootDirectories())
{
MainWindow.logger.severe("Walking:"+path.getRoot());
if(Files.isDirectory(path))
{
constructRootData(path);
visitFolder = new VisitFolder(keys, depth);
Files.walkFileTree(path, visitFolder);
}
}
日志输出
01/03/2018 10.40.42:GMT:CreateFolderTree:start:SEVERE: Walking:C:\
01/03/2018 10.40.42:GMT:CreateFolderTree:start:SEVERE: Walking:D:\
01/03/2018 10.40.42:GMT:CreateFolderTree:start:SEVERE: Walking:E:\
01/03/2018 10.40.42:GMT:CreateFolderTree:start:SEVERE: Walking:Y:\
01/03/2018 10.41.03:GMT:CreateFolderTree:start:SEVERE: Walking:Z:\
我注意到虽然它只遍历 1 的深度,但它开始花费相当长的时间,我意识到问题是 Y:\ 被映射到实际上与网络断开连接的远程 NAS,并且需要 20 秒才能意识到这一点。
1> 我可以做些什么来确定 Y:\ 不能更快地访问。
2> 为什么 Files.walkFileTree() 实际上没有抛出异常,它显然不会,因为如果它这样做 Z:\ 将不会得到处理,也不会记录任何问题。