我正在寻找一个与标准Unix函数接口的Java库,即stat()
,getpwuid()
,readlink()
。
这曾经存在,被称为javaunix
。它于2000年发布。见announcement。但项目页面现已消失。
今天Java中这些类型的函数是否有现代替代品?可以对/bin/ls -l
进行系统调用并解析输出,或编写自定义JNI方法,但这些方法比使用旧的javaunix
库更有用。
澄清 - 为了找到文件的所有者,应该从C程序中调用stat()
来提供所有者的UID,然后使用{{1}从UID获取帐户的名称。在Java中,这可以通过自定义JNI方法或使用JNI的getpwuid()
库来完成。
答案 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。