我想獲取目錄的長度(文件大小),我做了下面的遞歸方法來做到這一點,只有當我通過時,我得到了一些非常奇怪的結果new File("C:\\Users\\UserName\\Desktop")
作爲參數。在Java中獲取文件夾的大小返回負長
static long totalLength = 0;
// Method to get the size of a folder and its contents
private static long getFolderSize(File folder){
if(folder.isDirectory()){
File[] contents = folder.listFiles();
for(File current : contents){
if(current.isDirectory()){
totalLength = totalLength +getFolderSize(current);
}
totalLength = totalLength + current.length();
}
}
return totalLength;
}
但有趣的是,我的桌面上的一些文件夾做時,我將它們傳遞到方法返回預期的結果。我只是無法解釋爲什麼:我已經對單個文件的長度進行了一些調試,並且它們中沒有一個看起來是負面的,但我仍然有時會得到負面結果!
任何想法,將不勝感激!在此先感謝
你不想周圍的'totalLength = totalLength + current.length()'塊的'else'? – Borealid 2012-01-28 16:48:30
上面的代碼中缺少一些東西,'getFolderSize()'方法接收一個或兩個參數?它是否超載? – 2012-01-28 16:50:03
@ÓscarLópez我不知道你的意思。該方法沒有超載,它只有一個參數。你爲什麼困惑? – Andy 2012-01-28 17:14:53