【问题标题】:Is there a Java library of Unix functions?是否有 Unix 函数的 Java 库?
【发布时间】:2010-11-08 10:56:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java unix java-native-interface posix


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      据我所知,JNA-POSIX 目前处于停滞状态。

      开发人员继续创建JNR-POSIX

      【讨论】:

        【解决方案3】:

        我会很惊讶看到它,因为它几乎必然是特定于平台的。 Java 不是该工作的最佳工具。但是如果你坚持的话,你当然可以通过 JNI 挂接或调用外部程序。或者也许研究一下 Groovy,我知道它对于 shell 脚本编写相当不错,尽管我没有个人经验。

        【讨论】:

          【解决方案4】:

          我不知道任何带有 Unix 函数的库。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-02-13
            • 2023-03-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-27
            • 1970-01-01
            相关资源
            最近更新 更多