在Java中获取硬链接计数

时间:2012-06-15 05:56:45

标签: java linux posix solaris-10

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

解析ls -l不是一个选项。

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

是否有其他轻量级API或代码可以获取此信息?

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:2)

在C中缺少using JNIstat / lstat,唯一比解析ls更好的方法就是运行:

stat --format=%h filename

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

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

答案 2 :(得分:0)

另请考虑尝试{strong> stat(2)的jnr-posix实现。