2012-09-14 60 views
1

爲java.io.File.length的JavaDoc()規定:java.io.File.length()返回一個目錄是什麼?

返回由此抽象路徑名錶示的文件的長度。如果此路徑名錶示目錄,則返回值未指定。

我一直在Solaris上測試,這似乎是基於目錄中的文件數量,但它總是返回比文件\文件夾包括'。'更大的數字。文件。

有誰知道這個值在Solaris \ Linux \ OSX \ Windows上的含義是什麼?這可能是操作系統的具體情況,但如果知道它有任何價值,這將是一件好事!

編輯:

我已告知,這是不應該使用的一個功能的意見同意「一次編寫,到處運行」的Java方法,但因爲返回的值是不是0L (它可能在某些操作系統上,但不是在Solaris上)我很想知道這個值是指什麼。

本地Java調用通常是直接的單一操作系統過程,所以無論這個值是指什麼,都有一定的含義,你可以免費獲得它,而不需要加載更多的java.io.File(s)。

+0

這將是依賴於操作系統的,但我希望它返回用在空間磁盤。 BTW:目錄是一個特殊類型的文件,其目錄中包含名稱和節點。如果你是UNIX的根目錄,你可以像讀取文件一樣讀取目錄的字節。 –

+0

java.io.File的JavaDoc表示它對於目錄沒有指定。抽象類java.io.FileSystem(它是File.length()所調用的)的JavaDoc說它定義爲從目錄爲零。它實際上是用本地代碼實現的,我不知道該如何看待。無論如何,如果它不爲零,那麼本機代碼將違背java.io.Filesystem的規範。 – Nick

+8

它返回實際知道數字意味着= P的開發人員的數量。無論如何,這個數字是你不應該依賴的,因爲javadocs說它沒有指定。 –

回答

2

File.length主要用於確定文件的大小。它決不能用於確定直接文件的數量。事實上,未定義的JavaDocs狀態應該觸發警告響鈴。

如果你不知道的文件目錄中的數量,你應該使用File.listFiles代替(或它的替代品之一)

相關問題