1

我的 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:\ 将不会得到处理,也不会记录任何问题。

4

0 回答 0