Как я могу найти размер папки в Java без использования рекурсивного обхода? - PullRequest
4 голосов
/ 26 июня 2011

Я разрабатываю небольшое приложение для ежемесячного резервного копирования. Здесь я хочу получить размер папки, чтобы проверить, достаточно ли свободного места на целевом диске или нет. Я перебираю структуру каталогов один раз, чтобы создать резервную копию (скопировать ту же структуру dir). Теперь, чтобы найти размер, как я уже говорил, я не хочу использовать рекурсию. Так есть ли другой более простой метод?


Спасибо всем вам, я наконец-то использовал org.apache.commons.io.FileUtils для выполнения работы, после того, как весь этот пакет также использует рекурсию.

Ответы [ 4 ]

4 голосов
/ 26 июня 2011

Не уверен, если это возможно.

Четный FileUtils.sizeOfDirectory () в apache-commons IO использует рекурсию для получения размера каталога.

1 голос
/ 26 июня 2011

Я считаю, что это невозможно. Даже операционные системы должны проходить через структуры каталогов, чтобы определить размер каталога. Насколько я знаю, ни одна современная файловая система не хранит размер всех содержащихся файлов.

0 голосов
/ 26 июня 2011

Почему вы не определяете размер каталога во время первого рекурсивного прохода?

0 голосов
/ 26 июня 2011

Функциональность Java, подобная этой, реализована как часть Java API.Ничто там не обеспечивает то, что вы хотите.Apache Commons предлагает библиотеку FileUtils, которая имеет sizeOfDirectory.Рекурсия, безусловно, используется в этом.Почему вы не хотите использовать рекурсию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...