No se puede calcular el tamaño de la carpeta en Gingerbread (2.3)

Estoy calculando un tamaño de carpeta en mi aplicación usando "file.length ()". Está funcionando bien en otras versiones de Android OS y estoy recibiendo el tamaño de mi carpeta en bytes. Pero el problema es que cuando estoy ejecutando el mismo código para un dispositivo que tiene pan de jengibre en él, su siempre me muestra el tamaño como 0 bytes. No soy capaz de entender el problema. Aquí está mi código: –

File file1=new File(android.os.Environment.getExternalStorageDirectory(),"/.Gallery"); double total_length = file1.length(); 

Por favor, ayúdame a resolver esto, cualquier ayuda sería apreciable.

Gracias por adelantado.

De la documentación de Android:

File.lenght (): Devuelve la longitud de este archivo en bytes. Devuelve 0 si el archivo no existe. El resultado de un directorio no está definido .

Puede usar esto para calcular la longitud del directorio:

 public static long getFolderSize(File folderPath) { long totalSize = 0; if (folderPath == null) { return 0; } if (!folderPath.isDirectory()) { return 0; } File[] files = folderPath.listFiles(); if(files != null){ for (File file : files) { if (file.isFile()) { totalSize += file.length(); } else if (file.isDirectory()) { totalSize += file.length(); totalSize += getFolderSize(file); } } } return totalSize; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.