Supponiamo di voler ottenere molte delle proprietà di un file (proprietario, dimensione, autorizzazioni, tempi) restituite dalla chiamata di sistema lstat(). Un modo per farlo in Java è creare un oggetto java.io.File e fare chiamate come length(), lastModified(), ecc. Ho due problemi finora:Unix stat()/lstat() per Java
Ognuna di queste chiamate innesca una chiamata stat(), e per i miei scopi stat() s sono considerati costosi: Sto cercando di eseguire la scansione di miliardi di file in parallelo su centinaia di host e (in prima approssimazione) l'unico modo per accedere a questi file è tramite NFS, spesso contro i cluster di file dove stat() sotto carico può impiegare mezzo secondo.
La chiamata non è lstat(), è tipicamente stat() (che segue i collegamenti simbolici) o fstat64() (che apre il file e può attivare un'operazione di scrittura per registrare il tempo di accesso).
C'è un modo "giusto" per fare questo, in modo tale che io alla fine solo facendo un unico lstat call() e l'accesso ai membri della struct stat? Quello che ho trovato finora da Googling:
JDK 7 avrà l'interfaccia PosixFileAttributes in java.nio.file con tutto quello che voglio (ma io preferirei non essere in esecuzione nightly build del mio JDK se posso evitarlo).
Posso aprire la mia interfaccia con JNI o JNA (ma preferirei non se ce n'è uno esistente).
Un previous similar question ottenuto un paio di proposte implementazioni JNA JNI /. Uno è andato e l'altro è mantenuto in modo discutibile (ad esempio, nessun download, solo un repository hg).
Ci sono delle opzioni migliori là fuori?
Grazie! In definitiva credo che JDK 7 non sia poi così male; Posso semplicemente tenere i binari con lo strumento che sto scrivendo, e sarà presto un software di livello produttivo. –