是否有Unix函数的Java库?

时间:2009-07-06 17:09:02

标签: java unix java-native-interface posix

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

这曾经存在,被称为javaunix。它于2000年发布。见announcement。但项目页面现已消失。

今天Java中这些类型的函数是否有现代替代品?可以对/bin/ls -l进行系统调用并解析输出,或编写自定义JNI方法,但这些方法比使用旧的javaunix库更有用。

澄清 - 为了找到文件的所有者,应该从C程序中调用stat()来提供所有者的UID,然后使用{{1}从UID获取帐户的名称。在Java中,这可以通过自定义JNI方法或使用JNI的getpwuid()库来完成。

4 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:3)

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

开发人员继续创建JNR-POSIX

答案 2 :(得分:-2)

我会惊讶地看到一个,考虑到它几乎必然是特定于平台的。 Java不是这项工作的最佳工具。但是如果你坚持的话,你当然可以通过JNI或者调用外部程序。或者也许看看Groovy,我理解它对于shell脚本来说是相当不错的,尽管我没有个人经验。

答案 3 :(得分:-3)

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

对于大多数函数,我相信,您可以使用标准Java API来执行您想要的操作。例如,不需要使用命令ls来读取某个目录的文件。但在某些特定情况下,例如stat(要查明文件是否为链接),您必须使用JNI。