¿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.
- Android intención para sdcard listo
- Cómo obtener Galley Thumbnail para la carpeta de imágenes en particular en android?
- creando un drawable de la tarjeta del SD para fijar como fondo en android
- Mostrar toda la música en la tarjeta SD
- Abra una aplicación de cámara por intención y guardar la imagen en el SD y imageView
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.
- Abrir un archivo de texto de 12kb toma WAY demasiado tiempo ...?
- Si mi aplicación está instalada en la tarjeta SD, ¿también hay datos privados allí?
- Carga dibujable desde la tarjeta sd
- evitando un bloqueo cuando alguien monta una tarjeta SD de Android
- ¿Cómo obtener el espacio disponible en Android sdcard?
- ¿Cómo puedo obtener el tamaño de una carpeta en una tarjeta SD en Android?
- Instalación de la aplicación Android sin tarjeta SD
- Creación de bases de datos en sdcard
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.
- ¿Cómo insertar correctamente valores en la base de datos SQLite utilizando el método insert () de ContentProvider mediante un CursorLoader?
- Convertir UTC a Hora Local en Android