Lecture fichier zip efficacement en Java

Je travaille sur un projet qui fonctionne sur une très grande quantité de données.
J'ai beaucoup(en milliers) des fichiers zip, contenant chacun UN simple fichier txt avec des milliers de lignes(environ 80 lignes).
Ce que je suis en train de faire est la suivante:

for(File zipFile: dir.listFiles()){
ZipFile zf = new ZipFile(zipFile);
ZipEntry ze = (ZipEntry) zf.entries().nextElement();
BufferedReader in = new BufferedReader(new InputStreamReader(zf.getInputStream(ze)));
...

De cette façon, je peux lire le fichier ligne par ligne, mais il est définitivement trop lent.
Étant donné le grand nombre de fichiers, et que les lignes doivent être lus, j'ai besoin de les lire de manière plus efficace.

J'ai regardé pour une approche différente, mais je n'ai pas été en mesure de trouver quoi que ce soit.
Ce que je pense que je devrais utiliser sont le java nio Api destinées à droite intensifs, les opérations d'e/S, mais je ne sais pas comment les utiliser avec les fichiers zip.

Toute aide serait vraiment appréciée.

Merci,

Marco

Quelle est la taille des fichiers? Combien de temps faut-il pour les lire à l'aide du code? Combien de temps faut-il pour copier /dev/null?
Vous devez d'abord déterminer si la plupart de votre temps est consacré à la lecture de fichiers zip, ou de traitement de l'lignes de texte. Que faites-vous avec chaque ligne dans les fichiers texte?
Les fichiers zippés sont d'environ 30 MO chacune, tandis que le txt à l'intérieur du fichier zip est d'environ 60/70 MO. La taille et le nombre de lignes ne sont pas fixes, ils peuvent changer, mais théoriquement, ils devraient toujours être similaire en taille et en nombre de lignes. Lire et traiter les fichiers avec ce code prend beaucoup d'heures, autour de 15, mais ça dépend de beaucoup de facteurs.
Je suggère qu'elle est le traitement qui prend le temps ici. Vous avez besoin de mesurer. Essayez juste de la lecture de la première partie, sans aucun traitement.
vous faites l'erreur classique de penser que le nio Api de rendre votre code plus rapide. le nio Api peuvent rendre votre code plus évolutive gestion de plusieurs flux w/ moins de threads, mais cela ne signifie pas nécessairement faire des choses rapide.

OriginalL'auteur smellyarmpits | 2012-05-24