有没有一个Java库包含Unix函数?

15

我正在寻找一款用于与标准Unix函数进行交互的Java库,例如 stat(), getpwuid(), readlink()

曾经存在过一个名为 javaunix 的库,它于2000年发布。请看这个公告。但是现在该项目已经不存在了。

今天还有没有类似的Java库可以取代这些功能?我们可以通过调用系统命令/bin/ls -l并解析输出来实现,或编写自定义JNI方法,但这些方法比简单使用旧版的 javaunix 库更加繁琐。

澄清一下-- 为了从C程序中查找文件所有者,需要调用stat()获取所有者的UID,然后使用getpwuid()从UID中获取账户名称。在Java中可以通过自定义JNI方法或使用使用JNI的 javaunix 库来完成。

4个回答

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

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

开发者们已经开始创建JNR-POSIX


-3

考虑到它几乎必须是特定于平台的,如果有一个这样的工具,我会感到惊讶。Java不是完成该任务的最佳工具。但是,如果您坚持要使用Java,可以通过JNI或调用外部程序进行连接。或者,您可以研究一下Groovy,我了解它在Shell脚本方面相当不错,尽管我个人没有经验。


-4

我不知道有哪些包含Unix函数的库。

对于大多数函数,我相信您可以使用标准的Java API来实现您想要的功能。例如,没有必要使用命令ls来读取某个目录中的文件。但在某些特定情况下,比如stat(查找文件是否为链接),您必须使用JNI。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接