2009-07-06 13 views
12

私は、標準のUnix関数(つまり、stat()getpwuid()readlink())とインターフェースするJavaライブラリを探しています。Unix関数のJavaライブラリがありますか?

これまで存在していたが、javaunixと呼ばれていました。 2000年にリリースされました。announcementを参照してください。しかし、プロジェクトのページはもうなくなりました。

Javaのこれらのタイプの関数は、現代的な置き換えがありますか? /bin/ls -lへのシステムコールを行い、出力を解析するか、カスタムJNIメソッドを書くことができますが、これらのアプローチは単に古いjavaunixライブラリを使用するよりも機能します。

明確化 - Cプログラムから、ファイルの所有者を見つけるために、それは所有者のUIDを与えるstat()を呼び出し、その後、UIDからアカウント名を取得するためにgetpwuid()を使用する必要があります。 Javaでは、カスタムJNIメソッド、またはJNIを使​​用するjavaunixライブラリを使用して実行できます。

答えて

16

私は2つの魅力的なプロジェクトを承知しています個人的に私は非常に好きですJNA

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

私はUnixの機能を持つライブラリを知らない。

の機能のほとんどは、標準のJava APIを使用して必要な処理を行うことができます。たとえば、あるディレクトリのファイルを読むためにコマンドlsを使う必要はありません。特定のケースでは、statのように(ファイルがリンクかどうかを調べるために)JNIを使​​用する必要があります。

-2

プラットフォーム固有のものであると考えれば、私はそれに気づくでしょう。 Javaはその仕事にとって最善のツールではありません。しかし、もしあなたが主張すれば、あなたは確かにJNIを介して接続するか、外部プログラムを呼び出すことができます。あるいは、私がそれを個人的に経験していないのに、シェルスクリプトのために合理的に良いと分かっているGroovyを調べてみてください。 [JRubyの由来](JNAをもと)

  • jna-posix [Jythonの由来]

  • 3

    JNA-POSIXは、私の知る限り、現在の停滞である:マッピングlink(2)、私のこの例を見てみましょう。

    開発者が作成に移ったJNR-POSIX

    関連する問題