Как получить список каталогов БЫСТРО в Java? - PullRequest
19 голосов
/ 24 июня 2009

Предположим, что очень простая программа, которая перечисляет все подкаталоги данного каталога. Звучит достаточно просто? За исключением единственного способа перечисления всех подкаталогов в Java, это использовать FilenameFilter в сочетании с File.list () .

Это работает для тривиального случая, но когда в папке, скажем, 150 000 файлов и 2 подпапки, глупо ждать там 45 секунд, перебирая все файлы и тестируя для file.isDirectory (). Есть ли лучший способ перечислить подкаталоги ??


PS. Извините, пожалуйста, сохраните лекции, если в одном каталоге слишком много файлов. Наша живая среда имеет это как часть требования.

Ответы [ 13 ]

0 голосов
/ 24 июня 2009

Хорошо, либо JNI, либо, если вы говорите, что ваше развертывание является постоянным, просто запустите «dir» в Windows или «ls» в * nixes с соответствующими флагами для вывода списка только каталогов (Runtime.exec ())

0 голосов
/ 24 июня 2009

В этом случае вы можете попробовать какое-нибудь решение JNA - платформо-зависимый каталогизатор (FindFirst, FindNext в Windows) с возможностью некоторого итерационного шаблона. Также Java 7 будет иметь гораздо лучшую поддержку файловой системы, стоит проверить спецификации (я не помню никаких особенностей).

Редактировать: Идея: один вариант - скрыть медлительность списка каталогов от глаз пользователя. В клиентском приложении вы можете использовать анимацию, пока листинг работает, чтобы отвлечь пользователя. На самом деле зависит от того, что еще ваша заявка делает помимо списка.

0 голосов
/ 24 июня 2009

Может быть, вы могли бы написать программу поиска по каталогам на C # / C / C ++ и использовать JNI, чтобы получить ее на Java. Не знаю, улучшит ли это производительность или нет.

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