7

我需要一些东西来从java中的solaris10 os中的文件中获取硬链接计数。

解析 ls -l 不是一种选择。

我尝试使用 posix for java http://bmsi.com/java/posix/index.html但无法使其正常工作。

是否有任何其他轻量级 API 或代码来获取此信息?

4

3 回答 3

12

在 Java 7 中,您可以使用新的文件属性 API来获取 java.nio.file.Files.getAttribute(path, "unix:nlink").

“unix”属性视图实际上并未定义为标准 API 的一部分(并且“posix”视图不提供 nlink),但在标准 Oracle/OpenJDK 实现中可用。另一方面,现在可以使用标准方法创建链接。去搞清楚。createLinkFiles

于 2012-06-15T11:28:16.683 回答
2

除了在 C中使用 JNIstat/lstat之外,唯一比解析 ls 更好的是运行:

stat --format=%h filename

它只输出一个数字并且易于解析。

但是当文件名中可能有非 ascii 字符时,一切都会变得复杂。您需要将文件名转换为本机编码,有时并非文件名中允许的所有字符都可以转换(如果本机编码不是某种 unicode)。

于 2012-06-15T07:45:15.223 回答
0

还可以考虑为此尝试stat(2)的jnr-posix实现。

于 2015-07-05T19:49:11.927 回答