Я пытаюсь использовать File.getTotalSpace()
и File.getFreeSpace()
на общем ресурсе NAS через UNC с хоста Windows.getTotalSpace() с UNC
Из-за различных ссылок на NAS, свободное/общее пространство будет отличаться в зависимости от конкретной запрашиваемой директории.
Например, в окне DOS:
dir \\nas\level1
может вернуться 12,234,567 байт бесплатно, но:
dir \\nas\level1\level2\level3
возвращает 987654321 байт бесплатно.
Стараюсь:
new File("\\\\nas\\level1\\level2\\level3").getFreeSpace();
но это возвращает 12,234,567. Похоже, что getFreeSpace()
и getTotalSpace()
извлекают сообщенное пространство из корня пути (\\ nas, в данном случае), а не из запрошенного уровня.
Если я карту, что UNC путь к букве диска, например .:
net use s: \\nas\level1\level2\level3
затем
new File("s:").getFreeSpace();
возвращает правильное значение. Но мне нужно перебирать пучки UNC-путей, поэтому сопоставление их всех не представляется возможным.
Так как я могу получить бесплатное/общее пространство на основе UNC-ресурса с определенного уровня каталога, который я запрашиваю?
Предложение: попробуйте java.nio [FileStore] (https://docs.oracle.com/javase/7/docs/api/java/nio/file/class-use/FileStore.html). Например, 'Files.getFileStore (Paths.get (« путь к файлу »). ToRealPath()). GetUsableSpace();'. – paulsm4
Спасибо за предложение, но он дал тот же результат. – Joe