是否有一个Unix函数的Java库?

我正在寻找一个Java库来接口标准的Unix函数,即stat()getpwuid()readlink()

这曾经存在,并被称为javaunix 。 它在2000年被释放。看见这个公告 。 但是项目页面现在没有了。

现在在Java中有这些types的函数的现代替代吗? 可以对/bin/ls -l进行系统调用并parsing输出,或者编写自定义的JNI方法,但这些方法比简单地使用旧的javaunix库更有效。

澄清 –为了find一个文件的所有者,从一个C程序,它应该调用stat()给出所有者的UID,然后使用getpwuid()从UID获取帐户的名称。 在Java中,可以通过自定义的JNI方法或使用JNI的javaunix库来完成。

我知道两个引人注目的项目:

  • Java的posix (基于JNI)[从Jython派生]
  • jna-posix (基于JNA)[源自JRuby]

我个人非常喜欢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); } } 

就我所知,JNA-POSIX目前停滞不前。

开发人员继续创建JNR-POSIX

我会很惊讶的看到一个,考虑到它几乎必须是平台特定的。 Java不是那个工作的最佳工具。 但是,如果你坚持的话,你肯定可以通过JNI挂钩或者调用外部程序。 或者,也许看看Groovy,我知道Groovy对shell脚本来说是相当不错的,虽然我没有亲身体验它。

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

对于大多数功能,我相信,你可以使用标准的Java API来做你想做的事情。 例如,不需要使用命令ls来读取某个目录的文件。 但在某些特定情况下,如stat (查找文件是否是链接),则必须使用JNI。