在Java中获得硬链接计数

我需要从java中的solaris10操作系统中的文件中获取硬链接计数。

parsingls -l不是一个选项。

我尝试使用java的http://bmsi.com/java/posix/index.html的 posix,但无法设法得到它的工作。

有没有其他轻量级的API或代码来获取此信息?

Solutions Collecting From Web of "在Java中获得硬链接计数"

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

“unix”属性视图实际上并没有被定义为标准API的一部分(“posix”视图并没有给你提供链接),但是在标准的Oracle / OpenJDK实现中是可用的。 另一方面,通过Files上的标准createLink方法现在可以创建链接。 去搞清楚。

在C中使用JNI和stat / lstat ,唯一比解析ls更好的方法是运行:

 stat --format=%h filename 

它只是输出一个数字,很容易解析。

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

另外考虑尝试stat(2)的jnr-posix实现。