Предположим, я хочу получить несколько свойств файла (владелец, размер, разрешения, время), возвращаемых системным вызовом lstat (). Одним из способов сделать это в Java является создание объекта java.io.File и выполнение для него таких вызовов, как length (), lastModified () и т. Д. Пока у меня две проблемы:
Каждый из этих вызовов запускает вызов stat (), и для моих целей stat () считаются дорогими: я пытаюсь сканировать миллиарды файлов параллельно на сотнях хостов и (для первое приближение) единственный способ получить доступ к этим файлам - через NFS, часто с кластерами файлов, где stat () под нагрузкой может занять полсекунды.
Вызов не lstat (), обычно это stat () (который следует по символическим ссылкам) или fstat64 () (который открывает файл и может инициировать операцию записи для записи времени доступа).
Есть ли «правильный» способ сделать это, чтобы я в итоге просто сделал один вызов lstat () и получил доступ к членам struct stat? Что я нашел так далеко от Google:
JDK 7 будет иметь интерфейс PosixFileAttributes в java.nio.file со всем, что я хочу (но я бы предпочел не запускать ночные сборки моего JDK, если я могу этого избежать).
Я могу развернуть свой собственный интерфейс с JNI или JNA (но я бы предпочел, если бы он существовал).
A предыдущий аналогичный вопрос получил пару предложенных реализаций JNI / JNA. Один ушел, а другой поддерживается с сомнением (например, нет загрузок, только хранилище hg).
Есть ли лучшие варианты?