2009-07-06 61 views
12

我正在尋找一個Java庫來與標準Unix函數接口,即stat(),getpwuid(),readlink()是否有Unix函數的Java庫?

這用於存在,並被稱爲javaunix。它於2000年發佈。請參閱此announcement。但是項目頁面現在沒有了。

在Java中,這些類型的函數是否有現代替代品?可以對/bin/ls -l進行系統調用並解析輸出,或者編寫自定義的JNI方法,但這些方法比簡單使用舊的庫更有效。

澄清 -爲了找出一個文件的所有者,從C程序,它應該調用stat()這給所有者的UID,然後用getpwuid()從UID獲得該帳戶的名稱。在Java中,這可以通過定製JNI方法或使用JNI的庫來完成。

回答

16

我知道兩種解決項目:

我個人非常喜歡JNA。看看我的這個例子中,映射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

我不知道任何具有Unix功能的庫。

對於大多數功能,我相信你可以使用標準的Java API來做你想做的事情。例如,不需要使用命令ls來讀取某個目錄的文件。但在某些特定情況下,如stat(要查明文件是否爲鏈接),則必須使用JNI。

-2

我會驚訝地發現一個,因爲它幾乎必定是平臺特定的。 Java不是那份工作的最佳工具。但是,如果你堅持,你肯定可以通過JNI掛鉤,或者調用外部程序。或者,也許看看Groovy,我認爲這對於shell腳本來說是相當不錯的,儘管我沒有親身體驗它。

3

JNA-POSIX停滯不前目前,據我所知。

開發人員繼續創建JNR-POSIX

相關問題