¿Existe un límite para el número de archivos en un directorio de una tarjeta SD?

Tengo un proyecto escrito para dispositivos Android. Genera un gran número de archivos, cada día. Estos son todos los archivos de texto e imágenes. La aplicación utiliza una base de datos para hacer referencia a estos archivos.

La aplicación se supone para aclarar estos archivos después de un poco de uso (tal vez después de unos días), pero este proceso puede o no puede estar funcionando. Este no es el tema de esta pregunta.

Debido a un accidente histórico, la organización de los archivos es algo ingenua: todo está en el mismo directorio; .hidden directorio .hidden que contiene un archivo .nomedia cero bytes para evitar que el MediaScanner lo .nomedia .

Hoy, veo un error reportado:

 java.io.IOException: Cannot create: /sdcard/.hidden/file-4200.html at java.io.File.createNewFile(File.java:1263) 

En cuanto a la tarjeta SD, veo que tiene mucho espacio de almacenamiento, pero contando

 $ cd /Volumes/NO_NAME/.hidden $ ls | wc -w 9058 

La eliminación de varios archivos parece haber permitido la creación de archivos para hoy.

Lamentablemente, no intenté touch un nuevo archivo para intentar reproducir el error en una línea de comandos; También eliminé varios cientos de archivos en lugar de un puñado.

Sin embargo, mi pregunta es:

  • ¿Hay límites duros en filesize o número de archivos en un directorio?
  • Estoy incluso en el camino correcto aquí?

Nota Bene: La tarjeta SD es como es, es decir, no lo he formateado, así que supongo que sería un formato FAT- *.

El formato FAT-32 tiene límites de tamaño de archivo de 2GB (muy por encima de los filesizes que estoy tratando) y un límite de número de archivos en el directorio raíz. Definitivamente no estoy escribiendo archivos en el directorio raíz.

Hay un límite en 512 entradas en el directorio raíz del sistema de archivos FAT. Este límite se produce porque el directorio raíz vive en un lugar determinado en sistemas de archivos FAT.

Para otros directorios este límite no está en su lugar. Además, FAT32 eliminó el límite de entrada de 512 para el sistema de archivos raíz tratando el directorio raíz del mismo modo que cualquier otro directorio.

El uso de nombres de archivo largos – es decir, no en el formato 8.3 – significa que un solo archivo utiliza varias entradas de directorio .

Algunos usuarios de Google encuentran que algunas personas afirman que un directorio FAT32 puede tener un máximo de 65.536 entradas (lo que sería menos archivos si tenían nombres de archivo largos). Sin embargo, ninguna de las fuentes que mencionaron este límite parecía tan confiable, así que pensé que probaría esto.

Escribí un script que crea archivos con 30 nombres de caracteres, lo que significa que cada archivo necesitaría 4 entradas de directorio. Cuando la escritura consiguió archivar 16.384 falló con un error del IO y no podría crear más archivos en mi directtoy de la prueba. Así que esto parece validar el límite de entrada de 65.536.

Si usted está alcanzando este límite en 9.000 archivos entonces sus archivos deben utilizar por lo menos 7 entradas cada uno que corresponde a los nombres de archivo que son por lo menos 66 caracteres de largo. ¿Esto coincide con lo que estás haciendo? (O usted podría tener algunos nombres de archivo cortos y algunos muy, muy largos, pero usted consigue la idea.)

Creo que el límite de archivos en un directorio en Fat32 también depende de la longitud de los nombres de archivo

http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

He hecho algunas pruebas más (pruebas confiables :-)), tratando de escribir 100.000 directorios de nombres cortos en un único directorio. El límite fue alcanzado en 65.536.

La prueba se hizo en Nexus One con Android 2.2, pero creo que el resultado es válido para cualquier tarjeta SD FAT32.

  • No se puede guardar ni cargar entero con las preferencias
  • Android abrir o crear base de datos
  • Java.io.FileNotFoundException (permiso denegado) Al intentar escribir en el sdcard de Android
  • Cómo crear un archivo de imagen de tarjeta SD para el emulador de Android?
  • Conseguir todo el espacio total y disponible en Android
  • No se puede crear una carpeta en sdcard - mkdir siempre devuelve false
  • Almacenamiento extraíble (externo) vía sdcard por los fabricantes
  • ¿Cómo puedo escuchar el montaje de la tarjeta SD en Android?
  • Android External App Install (en la tarjeta SD), vuelva a cargar las alarmas del alarmmanager al re-montar a través del receptor
  • Android: Guardar el archivo permanentemente (incluso después de borrar datos / desinstalar)
  • Android Cómo ver doc de sdcard en gallary?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.