Comment la liste a de 2 millions de répertoire de fichiers en java sans avoir un “out of memory” exception

Je dois traiter avec un répertoire de près de 2 millions de xml à traiter.

J'ai déjà résolu le traitement de répartir les travaux entre les machines et les threads à l'aide de files d'attente et tout va bien.

Mais maintenant, le gros problème est le goulot d'étranglement de la lecture du répertoire, avec les 2 millions de fichiers afin de combler les files d'attente de manière incrémentale.

J'ai essayé d'utiliser le File.listFiles() méthode, mais il me donne une java out of memory: heap space exception. Des idées?

  • Désolé, mais ce que l'OS ne supporte pas que? Vivant en 1950? Je Sais que de divers outils de soufflage, par exemple sur windows (explorer arriver AFFREUSEMENT lent), mais le système de fichiers prend en charge.
  • FAT32 (vieux, mais en aucun cas 1950 époque, et encore assez commun) a une limite de fichiers par répertoire óf 65k.
  • Mais en supposant que quelqu'un utilise qui est neglegient - à l'exception des appareils n'est pas soutenu, et puis le problème - devinez quoi - ne serait pas "problème d'inscription, les fichiers".
  • J'adhère complètement, il a été un mauvais choix de ne pas les stocker dans un hiérarque façon. Le système de fichiers est NTFS. Ici vous pouvez lire les limites: technet.microsoft.com/en-us/library/cc781134(WS.10).aspx
  • Salut @Fgblanch a u trouver la solution car j'ai le même problème, s'il vous Plaît aider.
  • Salut, je suis confronté au même problème. Pourriez-vous nous expliquer comment vous avez résolu le problème s'il vous plaît?
  • Car nous ne pouvions pas utiliser Java 7, nous avons trouvé un modèle dans les noms de fichiers et leur a écrit un script pour les stocker de manière hiérarchique (beaucoup plus efficace). Donc, ma suggestion utilisation de Java 7+ ou essayer de réorganiser les fichiers dans plusieurs dossiers sans interroger l'ensemble de la liste
  • trouver la solution dans le commentaire ci-dessus
  • si j'utilise FileNameFilter, cela aidera à éviter à la mémoire de l'exception? Je peux aussi utiliser Java7, quelle est la meilleure solution dans ce cas. Les fichiers que je serait la transformation pourrait être autour de 80 GO(chacun environ 1 mo ou moins). Pouvez-vous suggérer qui Java7 bibliothèque pourrait m'aider?

InformationsquelleAutor Fgblanch | 2010-06-29