Почему Files.walkFileTree не сообщает о невозможности доступа к подключенному диску

Мой Java-код пересекает корневые каталоги компьютера, чтобы создать дерево папок (для использования в качестве 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:\, он не был бы обработан, ничего, указывающее на проблему, также не регистрировалось.

0 ответов

Другие вопросы по тегам