Travailler avec les fichiers Zip et GZip en Java

Il a été un moment depuis que j'ai fait en Java I/O, et je ne suis pas au courant de la dernière "droit" des façons de travailler avec Zip et GZip fichiers. Je n'ai pas forcément besoin d'un travail plein de démo - je suis principalement à la recherche pour le droit des interfaces et les méthodes à utiliser. Oui, je pourrais regarder tout aléatoire de ce tutoriel, mais la performance est un problème (ces fichiers peuvent être assez gros) et je ne se soucient en utilisant le meilleur outil pour le travail.

Le processus de base, je vais être mise en œuvre:

  • Télécharger un tas de fichiers (qui peut être compressé, au format gzip, ou les deux) dans un dossier temp.
  • Ajouter tous les fichiers extraits dans un nouveau fichier zip dans un dossier temp.

Les fichiers d'entrée peut être comprimé et archivé plus d'une fois. Par exemple, le "extraction" doit prendre l'une des entrées ci-dessous (je ne suis pas dans le contrôle de ceux-ci), et de laisser derrière foo.txt:

  • foo.txt.gz
  • foo.txt.zip
  • foo.txt.gz.zip
  • foo.txt.zip.gz
  • ...
  • foo.txt.gz.gz.gz.zip.gz.zip.zip.gz.gz
  • ...

Alors, j'ai peut-être laissé avec foo.txtbar.mp3baz.exe - donc, je voudrais juste ajouter un nouveau fichier zip avec des nom générique.

Questions:

  • Avec la taille du fichier étant une source potentielle de préoccupation, qui (interfaces/classes/méthodes) dois-je utiliser pour rapidement:
    • extraire des fichiers zip?
    • extraire les fichiers gzip?
    • écrire des fichiers zip?
  • Suis-je mieux fait de garder l'individu extrait les fichiers dans la mémoire avant d'écrire sur le disque? Ou,
  • Faire potentiellement de gros fichiers d'en faire une mauvaise idée?

source d'informationauteur Matt Ball