2012-06-15 90 views
5

我需要從java中的solaris10操作系統中的文件獲取硬鏈接數。在Java中獲得硬鏈接數量

解析ls -l不是一個選項。

我嘗試使用posix for java http://bmsi.com/java/posix/index.html,但無法使其工作。

是否有任何其他輕量級API或代碼來獲取此信息?

+0

「ls -l | wc -l」不起作用? – alfasin

+0

@alfasin:缺少_parsing'ls'不是一個選項_? –

+0

@ K-ballo對不起 - 我不明白你的Q. – alfasin

回答

8

在Java 7中,您可以使用新的file attributes APIjava.nio.file.Files.getAttribute(path, "unix:nlink")

「unix」屬性視圖實際上並未定義爲標準API的一部分(並且「posix」視圖不會提供nlink),但可在標準Oracle/OpenJDK實現中使用。 另一方面創建鏈接現在可用的標準createLink方法Files。去搞清楚。

+0

太棒了......太糟糕了,我們現在有6個標準。 :( – DRTauli

+0

因此,您最好計劃升級,因爲[Java 6將在5個月內(2012年11月)失效](http://www.oracle.com/technetwork/java/eol-135779.html)。 – Tometzky

2

using JNIstat/lstat短用C比分析LS更好的唯一的事情是將運行:

stat --format=%h filename 

剛剛輸出數量並且易於解析。

但是,當文件名中可能有非ascii字符時,它會變得複雜。您需要將文件名轉換爲本機編碼,並且有時並非文件名中允許的所有字符都可以轉換(如果本機編碼不是某種Unicode)。

+0

很酷的作品。謝謝!但我測試過的其中一臺服務器沒有統計信息......是否有任何其他解決方案不需要安裝或什麼...先謝謝了。 :) – DRTauli

+0

是一個僅適用於Linux的應用程序? – DRTauli

0

另請考慮嘗試執行stat(2)