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