Статистика Unix ()/lstat () для Java

Предположим, что я хочу получить несколько из свойств файла (владелец, размер, полномочия, времена), как возвращено lstat () системный вызов. Один способ сделать это в Java должно создать java.io. Объект файла и делает вызовы как длина (), lastModified (), и т.д. на нем. У меня есть две проблемы до сих пор:

  1. Каждый из этих вызовов инициировал статистику (), вызов, и для моей статистики целей () s считают дорогим: я пытаюсь просканировать миллиарды файлов параллельно на сотнях хостов, и (в первом приближении) единственный способ получить доступ к этим файлам через NFS, часто против кластеров файлового сервера, где статистика () при загрузке может занять половину секунды.

  2. Вызов не является lstat (), это обычно - статистика () (который следует за символьными ссылками), или fstat64 () (который открывает файл и может инициировать операцию записи для записи времени доступа).

Существует ли "правильный" способ сделать это, такое, что я заканчиваю тем просто, что делал единственный lstat () вызов и получил доступ к членам статистики структуры? Что я нашел так далеко от поиска с помощью Google:

  • JDK 7 будет иметь интерфейс PosixFileAttributes в java.nio.file со всем, что я хочу (но я не выполнил бы ночные сборки своего JDK, если я могу избежать его).

  • Я могу прокрутить свой собственный интерфейс с JNI или JNA (но я быть бы, если существует существующий).

Предыдущий подобный вопрос добрался, несколько предложили реализации JNI/JNA. Каждый ушел, и другой сомнительно сохраняется (например, никакие загрузки, просто hg репозиторий).

Есть ли там какие-либо более оптимальные варианты?

5
задан Community 23 May 2017 в 12:01
поделиться

1 ответ

Похоже, вы в значительной степени охватили все основы. Когда я начал читать ваш вопрос, моей первой мыслью был JDK 7 или JNI. Не зная ничего о шаблоне изменения в этих файлах, вы также можете изучить какой-то постоянный кеш с рассматриваемой информацией, например, встроенную БД. Вы также можете изучить другой метод доступа, помимо NFS, например настраиваемую веб-службу, которая предоставляет информацию о большом количестве файлов с удаленного хоста.

2
ответ дан 15 December 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: