2011-06-08 152 views
4

我在我的應用程序中使用來自Java的File類的file.GetFreeSpace(),以確保在傳輸文件之前有足夠的空間。路徑是一個unc路徑,目前擁有約5TB的可用空間。但是,當上面的代碼運行時,返回的空間量僅爲713998336字節(〜680MB)。File.getFreeSpace()不返回正確的值

我將應用程序映射爲使用一個不同的unc路徑,它具有100MB和1GB以上的空閒空間(我正在添加/刪除要測試的文件),並且應用程序報告了正確的可用空間量。

更新:通過很多調試,我發現了這個問題。 與此類似的unc路徑:\\domain6\test\Scratch_Folder\其中Scratch_Folder是一個DFS命名空間,具有〜5TB的可用空間。但是,當執行file.getFreeSpace時,它將返回僅有670MB的\\domain6\test\的可用空間。爲什麼會發生?

+0

'getTotalSpace'是否正常工作(http://download.oracle.com/javase/6/docs/api/java/io/File.html#getTotalSpace%28%29)? – 2011-06-08 15:52:24

+1

看起來你正在遭受32位溢出。例如5 TB - 42億約0.7 TB。 – 2011-06-08 15:53:09

+0

@Vlad - getTotalSpace僅報告「16096837632」(〜15GB),其中總大小實際上是5.69TB – Saggio 2011-06-08 16:33:01

回答

0

我發現了這個問題! Java正在返回DFS根目錄中的可用空間量,而不是DFS的實際文件夾(Scratch_Folder顯示爲快捷鍵)。我發現了一個不包含快捷方式的文件夾的另一個更直接的路徑,它將應用程序指向那裏,現在它按預期工作。

0

聽起來像您的JVM中的錯誤。此功能是Java 6的新功能,您可以嘗試Java 6更新25.當我爲9 TB免費的UNC路徑運行此功能時,看到9 TB。