2009-07-06 4 views
12

Je suis à la recherche d'une bibliothèque Java pour l'interface avec les fonctions Unix standard, c'est-à-dire stat(), getpwuid(), readlink().Existe-t-il une bibliothèque Java de fonctions Unix?

Cela existait et s'appelait javaunix. Il a été publié en 2000. Voir ce announcement. Mais la page du projet est maintenant partie.

Existe-t-il un remplacement moderne pour ces types de fonctions dans Java aujourd'hui? On pourrait faire un appel système à /bin/ls -l et analyser la sortie, ou écrire une méthode JNI personnalisée, mais ces approches sont plus de travail que simplement en utilisant l'ancienne bibliothèque javaunix.

Précision - Pour connaître le propriétaire d'un fichier, d'un programme C, il devrait appeler stat() qui donne l'UID du propriétaire, puis utilisez getpwuid() pour obtenir le nom du compte de l'UID. En Java, cela peut se faire via une méthode JNI personnalisée, ou la bibliothèque javaunix qui utilise JNI.

Répondre

16

Je suis au courant de deux projets convaincants:

Personnellement, j'aime beaucoup JNA. Jetez un oeil à cet exemple de la mine, la cartographie 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

Je ne connais aucune bibliothèque avec les fonctions Unix.

Pour la plupart des fonctions, je crois, vous pouvez utiliser l'API Java standard pour faire ce que vous voulez. par exemple, il n'est pas nécessaire d'utiliser la commande ls pour lire les fichiers d'un répertoire. mais dans certains cas spécifiques, comme stat (pour savoir si un fichier est un lien), vous devez utiliser JNI.

-2

Je serais surpris de le voir, étant donné qu'il serait presque nécessairement spécifique à la plate-forme. Java n'est pas le meilleur outil pour ce travail. Mais vous pouvez certainement vous connecter via JNI ou appels à des programmes externes si vous insistez. Ou peut-être regarder dans Groovy, ce que je comprends est raisonnablement bon pour les scripts shell, même si je n'ai aucune expérience personnelle avec elle.

3
est actuellement stagnante-JNA Posix

, pour autant que je sache. Les développeurs ont ensuite créé JNR-POSIX

Questions connexes