Supongamos que deseo obtener varias de las propiedades de un archivo (propietario, tamaño, permisos, tiempos) devueltas por la llamada al sistema lstat(). Una forma de hacerlo en Java es crear un objeto java.io.File y hacer llamadas como length(), lastModified(), etc. en él. Tengo dos problemas hasta ahora:Unix stat()/lstat() para Java
Cada una de estas llamadas desencadena una llamada stat(), y para mi propósitos stat() s se consideran caro: Estoy tratando de escanear miles de archivos en paralelo cientos de hosts, y (en una primera aproximación), la única forma de acceder a estos archivos es a través de NFS, a menudo contra clústeres de archivadores donde stat() bajo carga puede tardar medio segundo.
La llamada no es lstat(), es típicamente stat() (que sigue a los enlaces simbólicos) o fstat64() (que abre el archivo y puede desencadenar una operación de escritura para registrar el tiempo de acceso).
¿Hay una manera "correcta" de hacer esto, de tal manera que termino simplemente haciendo una sola llamada lstat() y acceder a los miembros de la struct stat? Lo que he encontrado hasta el momento de buscar en Google:
JDK 7 tendrá la interfaz PosixFileAttributes en java.nio.file con todo lo que quiero (pero yo preferiría no estar corriendo versiones compiladas de mi JDK si puedo evitarlo).
Puedo rodar mi propia interfaz con JNI o JNA (pero preferiría no tenerla si la hay).
Un previous similar question tiene un par de implementaciones sugeridas JNA JNI /. Uno se ha ido y el otro se mantiene dudosamente (por ejemplo, sin descargas, solo un repositorio de hg).
¿Hay mejores opciones?
Gracias! En última instancia, supongo que JDK 7 no es tan malo; Puedo guardar los archivos binarios con la herramienta que estoy escribiendo, y pronto será un software de producción. –