2011-11-22 20 views
6

Ho bisogno di calcolare la dimensione fisica di una directory. L'algoritmo ingenuo per farlo potrebbe essere:dimensione directory android

public static long getFolderSize(File dir) { 
long size = 0; 
for (File file : dir.listFiles()) { 
    if (file.isFile()) { 
     System.out.println(file.getName() + " " + file.length()); 
     size += file.length(); 
    } 
    else 
     size += getFolderSize(file); 
} 
return size; 
} 

ma come gestire i collegamenti simbolici?

+2

link simbolici significano? – user370305

risposta

-1

È meglio utilizzare l'altra API per ottenere la dimensione del file API che è rilevante per questo sarebbe

public static long getFolderSize(File dir) { 
long size = 0; 
for (File file : dir.listFiles()) { 
    if (file.isFile()) { 
     System.out.println(file.getName() + " " + file.getTotalSpace()); 
     size += file.getTotalSpace(); 
    } 
    else 
     size += getFolderSize(file); 
} 
return size; 
} 
+2

Il doc dice per getTotalSpace(): "Restituisce la dimensione totale in byte della partizione contenente questo percorso." -> non restituisce la dimensione del file. + È disponibile solo per API 9 (devo correre su 1.6) – user954469

+0

+ i collegamenti simbolici possono creare riferimenti circolari. – user954469

Problemi correlati