我需要从java中的solaris10操作系统中的文件中获取硬链接计数。
parsingls -l不是一个选项。
我尝试使用java的http://bmsi.com/java/posix/index.html的 posix,但无法设法得到它的工作。
有没有其他轻量级的API或代码来获取此信息?
在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实现。