12
votes

Existe-t-il une limite pour le nombre de fichiers dans un répertoire sur une carte SD?

J'ai un projet écrit pour les appareils Android. Il génère un grand nombre de fichiers, chaque jour. Ce sont tous des fichiers texte et des images. L'application utilise une base de données pour référencer ces fichiers.

L'application est censée effacer ces fichiers après un peu d'utilisation (peut-être après quelques jours), mais ce processus peut ou non fonctionner. Ce n'est pas le sujet de cette question.

En raison d'un accident historique, l'organisation des fichiers est quelque peu naïve: tout est dans le même répertoire; un répertoire .Chitden contenant un fichier de code zéro octet .nomedia pour empêcher le médiaScanner indexer l'indexation.

Aujourd'hui, je vois une erreur signalée: < / p> xxx

concernant la carte sdcard, je vois qu'il a beaucoup de stockage à gauche, mais comptant xxx

Suppression d'un certain nombre de fichiers semble avoir autorisé la création de fichiers pour aujourd'hui de procéder.

Malheureusement, je n'ai pas essayé toucher un nouveau fichier pour essayer de reproduire l'erreur sur une commande de commande; J'ai également supprimé plusieurs centaines de fichiers plutôt qu'une poignée.

Cependant, ma question est la suivante:

  • Y a-t-il des limites difficiles sur la fichier ou le nombre de fichiers dans un répertoire?
  • suis-je même sur la bonne voie ici?

    nota bene: La carte SD est aussi - c'est-à-dire que je ne les ai pas formatées, alors je suppose que ce serait un format gras.

    Le format FAT-32 a des limites difficiles de la variation de 2 Go (bien Au-dessus des fichiers que je traite) et une limite de nombre de fichiers dans le répertoire racine. Je n'écris certainement pas de fichiers dans le répertoire racine.


0 commentaires

4 Réponses :


5
votes

Je pense que la limite des fichiers d'un répertoire dans FAT32 dépend également de la longueur des noms de fichiers

http://www.microsoft.com/whdc/system/ Platform / firmware / frotgen.mspx


1 commentaires

En effet, la spécification FAT32 indique que: "La taille maximale de répertoire valide est 2 ^ 21 octets." Le répertoire est un fichier spécial d'entrées de répertoire de 32 octets, chacun contenant un nom de fichier 8.3. Cela implique la limite de 65 536 fichiers de noms courts, tandis que le nom de fichier long occupe plusieurs entrées de répertoire, diminue efficacement la limite. Je pense que la spécification devrait être la principale source d'informations plutôt que sur des expériences ad-hoc sur un cadre unique concret. La réponse acceptée est toujours précieuse, même si cela ne prouve pas rien de général.



24
votes

Il y a une limite sur 512 entrées dans le répertoire racine du système de fichiers FAT. Cette limite provient car l'annuaire racine vit dans un endroit particulier sur les systèmes de fichiers FAT.

Pour les autres répertoires, cette limite n'est pas en place. De plus, FAT32 a supprimé la limite d'entrée 512 pour le système de fichiers racine en traitant le répertoire racine identique à tout autre répertoire.

Utilisation de noms de fichiers longs - c'est-à-dire pas en format 8.3 - signifie que Un seul fichier utilise plusieurs entrées de répertoire < / a>.

Certaines Googling trouve certaines personnes affirmant qu'un répertoire FAT32 peut avoir un maximum de 65 536 Entrées (ce qui serait moins de fichiers s'ils avaient des noms de fichiers longs). Cependant, aucune des sources qui a mentionné cette limite ne semblait que fiable, je pensais que je vais tester cela.

J'ai écrit un script qui crée des fichiers avec 30 noms de fichiers de caractères, ce qui signifie que chaque fichier aurait besoin de 4 entrées de répertoire. Lorsque le script est arrivé au fichier 16 384, il a échoué avec une erreur IO et je ne pouvais pas créer plus de fichiers dans mon test de test. Cela semble donc valider la limite d'entrée de 65 536.

Si vous frappez cette limite à 9 000 fichiers, vos fichiers doivent utiliser au moins 7 entrées chacune correspondant aux noms de fichiers d'au moins 66 caractères. Est-ce que cela correspond à ce que vous faites? (Ou vous pourriez avoir des noms de fichiers courts et des très très longs, mais vous obtenez l'idée.)


3 commentaires

Grande réponse, y compris la recherche primaire. Cela semble très réalisable. Le bogue a v. Récemment ré-produit afin de tester cette théorie et de faire rapport.


Absolument frapper sur l'argent. 6K fichiers d'environ 108 caractères dans le nom de fichier. 3.5K fichiers d'environ 9 caractères dans le nom de fichier. Merci.


Je suis impressionné que vous avez fait la recherche. Question: Avez-vous remarqué des résultats de performance à mesure que le nombre de fichiers est élevé?



5
votes

J'ai fait d'autres tests (tests fiables :-)), essayant d'écrire 100 000 répertoires nommés courtes dans un répertoire unique. La limite a été atteinte à 65 536.

Le test a été effectué sur Nexus One exécutant Android 2.2, mais je crois que le résultat est tiré pour toute carte SD FAT32.


1 commentaires

Génial! Merci! Cela concurent avec la réponse de @Dave Webb, mais avec des recherches primaires sur un périphérique. Bon travail!



-1
votes

Il y a une limite pratique beaucoup plus bas de 512, en fonction du périphérique Android , vous vous connectez:

Lorsque je connecte mon téléphone (Samsung A5 2015) à mon ordinateur (Ubuntu): De mon ordinateur, je peux facilement lire / écrire des fichiers sur mon téléphone, sauf pour un répertoire contenant 300 fichiers . Il est infiniment lent pour une action simple: Énumérez le contenu, copiez un fichier, supprimez un fichier. . . Donc, je pense qu'il existe une limite pratique au nombre de fichiers pour mon téléphone. J'ai aussi des comprimés avec lesquels je n'ai pas ce problème.


3 commentaires

J'ai rencontré un problème de copie très lente, j'ai lu les réponses précédentes qui ne m'a pas aidé. J'ai enfin localisé le problème sur cet appareil, sur ce répertoire . Et cela a répondu à ma question. Je pense que cela peut être utile pour les autres.


S'il vous plaît ne pas ajouter "moi aussi" comme des réponses. Il ne fournit pas de réponse à la question. Si vous avez une question différente mais connexe, demandez-la (référencez la question actuelle s'il fournit du contexte). Si vous êtes intéressé par cette question spécifique, vous pouvez la remettre, laisser un commentaire ou commencer une prime une fois que vous avez suffisamment de réputation.


Ma question était exactement la même: y a-t-il une limite pour le nombre de fichiers dans un répertoire sur une carte SD? (sur mon téléphone). J'ai constaté que le nombre de 300 fichiers était trop pour une utilisation pratique avec cet appareil. Si vous voulez que je supprime ma réponse, dis-moi. Je vais le supprimer.