AFAIK, это близко к максимально эффективному в Java. Возможно, вам удастся выжать от 2 до 5 процентов, но обычно это не то улучшение производительности, которое стоит.
Проблема состоит в том, что типичная ОС не предоставляет способ извлечения метаданных для нескольких файлов одновременно или извлечения нескольких значений метаданных одновременно.
Я ожидаю, что операции с метаданными (length()
, getLastModified()
и так далее) будут использовать подавляющее большинство времени. Но стоит проверить профилирование вашего приложения.
Сказав это, ввод-вывод вашего приложения, вероятно, не такой медленный, как вы думаете. Вполне вероятно, что ОС будет считывать и кэшировать дисковые блоки, содержащие метаданные. Системные вызовы, которые читают метаданные файла, будут возвращать кэшированную информацию большую часть времени. (Конечно, это зависит от ОС и зависит от типа используемой файловой системы.)