有Unix函数的Java库吗?
我正在寻找一个Java库来与标准Unix函数接口,即有Unix函数的Java库吗?,java,unix,java-native-interface,posix,Java,Unix,Java Native Interface,Posix,我正在寻找一个Java库来与标准Unix函数接口,即stat(),getpwuid(),readlink() 这曾经存在,被称为javaunix。它在2000年发行。看这个。但是项目页面现在不见了 在今天的Java中,这些类型的函数有什么现代的替代品吗?您可以对/bin/ls-l进行系统调用并解析输出,或者编写自定义JNI方法,但这些方法比简单地使用旧的javaunix库要复杂得多 澄清--为了从C程序中找到文件的所有者,它应该调用提供所有者UID的stat(),然后使用getpwuid()从U
stat()
,getpwuid()
,readlink()
这曾经存在,被称为javaunix
。它在2000年发行。看这个。但是项目页面现在不见了
在今天的Java中,这些类型的函数有什么现代的替代品吗?您可以对/bin/ls-l
进行系统调用并解析输出,或者编写自定义JNI方法,但这些方法比简单地使用旧的javaunix
库要复杂得多
澄清--为了从C程序中找到文件的所有者,它应该调用提供所有者UID的
stat()
,然后使用getpwuid()
从UID中获取帐户名。在Java中,这可以通过自定义JNI方法或使用JNI的javaunix
库来完成。我不知道有任何库具有Unix函数
对于大多数函数,我相信,您可以使用标准JavaAPI来做您想要做的事情。例如,不需要使用命令
ls
来读取某个目录的文件。但是在某些特定的情况下,比如stat
(为了确定文件是否是链接),您必须使用JNI。考虑到它几乎必然是特定于平台的,我会惊讶地看到一个JNI。Java不是这项工作的最佳工具。但如果您坚持的话,您当然可以通过JNI连接或调用外部程序。或者看看Groovy,我知道Groovy相当适合编写shell脚本,尽管我个人没有使用它的经验。我知道有两个引人注目的项目:
- (基于JNI)[源自Jython]
- (基于JNA)[源自JRuby]
链接(2)
:
据我所知,JNA-POSIX目前处于停滞状态 开发人员继续创建
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);
}
}