2011-11-22 12 views
6

Necesito calcular el tamaño físico de un directorio. El algoritmo ingenuo para hacer eso podría ser:android tamaño de directorio

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; 
} 

pero ¿cómo lidiar con los enlaces simbólicos?

+2

enlaces simbólicos significan? – user370305

Respuesta

-1

Es mejor que usar la otra API para obtener el tamaño de archivo de la API que es relevante para esto sería

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

El documento dice para getTotalSpace(): "Devuelve el tamaño total en bytes de la partición que contiene esta ruta". -> no devuelve el tamaño del archivo. + Solo está disponible para api nivel 9 (tengo que ejecutar en 1.6) – user954469

+0

+ los enlaces simbólicos pueden crear una referencia circular. – user954469

Cuestiones relacionadas