我需要一些东西来从java中的solaris10 os中的文件中获取硬链接数。
解析ls -l不是一个选项。
我尝试使用posix for java http://bmsi.com/java/posix/index.html但无法让它工作。
是否有其他轻量级API或代码可以获取此信息?
答案 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 JNI和stat
/ lstat
,唯一比解析ls更好的方法就是运行:
stat --format=%h filename
只输出一个数字并且易于解析。
但是当文件名中可能存在非ascii字符时,一切都变得复杂。您需要将文件名转换为本机编码,有时不能转换文件名中允许的所有字符(如果本机编码不是某种unicode)。
答案 2 :(得分:0)
另请考虑尝试{strong> stat(2)的jnr-posix实现。