2009-07-06 13 views
12

Estoy buscando una biblioteca Java para interactuar con las funciones estándar de Unix, es decir, stat(), getpwuid(), readlink().¿Hay una biblioteca Java de funciones de Unix?

Esto solía existir, y se llamaba javaunix. Fue lanzado en 2000. Ver esto announcement. Pero la página del proyecto ya no está.

¿Hay algún reemplazo moderno para este tipo de funciones en Java hoy? Se podría hacer una llamada al sistema al /bin/ls -l y analizar el resultado, o escribir un método JNI personalizado, pero estos enfoques son más que simplemente utilizar la antigua biblioteca javaunix.

Aclaración - Con el fin de averiguar el propietario de un archivo, desde un programa C, se debe llamar stat() que da el UID del propietario y, a continuación, utilizar getpwuid() para obtener el nombre de la cuenta de la UID. En Java esto se puede hacer a través de un método JNI personalizado o la biblioteca javaunix que usa JNI.

Respuesta

16

Soy consciente de dos proyectos convincentes:

Personalmente me gusta mucho JNA. Echar un vistazo a este ejemplo de la mina, la cartografía de link(2):

import com.sun.jna.Library; 
import com.sun.jna.Native; 

class Link { 

    private static final C c = 
     (C) Native.loadLibrary("c", C.class); 

    private static interface C extends Library { 

     /** see man 2 link */ 
     public int link(String oldpath, String newpath); 
    } 

    @Override 
    protected void hardLink(String from, String to) { 
     c.link(to, from); 
    } 
} 
-3

No conozco ninguna biblioteca con las funciones de Unix.

Para la mayoría de las funciones, creo que puede usar la API Java estándar para hacer lo que desee. por ejemplo, no es necesario utilizar el comando ls para leer los archivos de algún directorio. pero en algunos casos específicos, como stat (para averiguar si un archivo es un enlace), debe usar JNI.

-2

Me sorprendería ver uno, considerando que casi necesariamente sería específico de la plataforma. Java no es la mejor herramienta para ese trabajo. Pero, si insistes, ciertamente podrías conectarte a través de JNI o ​​llamar a programas externos. O tal vez mirar en Groovy, que entiendo es razonablemente bueno para scripts de shell, aunque no tengo ninguna experiencia personal con él.

3

JNA-POSIX se ha estancado en la actualidad, por lo que yo sé.

Los desarrolladores pasaron a crear JNR-POSIX

Cuestiones relacionadas