J'ai besoin de créer un fichier zip de mon programme Java. p>
J'ai besoin d'une bibliothèque capable de créer des fichiers Zip et de stocker des entrées à partir de texte et de fichier, et la chose la plus importante est dont j'ai besoin de stocker un répertoire complet de celui-ci (un répertoire avec plusieurs niveaux d'autres répertoires qui chacun a des fichiers en eux). p>
Pouvez-vous me suggérer un? p>
6 Réponses :
Une bibliothèque pour faire la partie difficile de la manipulation des fichiers zip (c'est-à-dire la compression) est construite dans Java SE ( http: // downloader.oracle.com/javase/1.5.0/docs/apli/java/util/zip/package-summary.html p>
Pour vos fonctions de niveau supérieur, il ne serait pas que em> difficile à écrire certaines fonctions pour traverser récursivement un répertoire et copier les fichiers dans un Il y a un bon exemple à http://www.javareference.com/jrexamples /Viewexample.jsp?id=108 - Il faut un peu de travail pour faire des fichiers unique. P> Java.Util.zip Code>): P>
zipOutputtream code> - probablement moins de 50 lignes de code ou ainsi. p>
Mais java.util.zip ne peut pas enregistrer un répertoire entier et je dois l'écrire par moi-même!
True, vous devrez traverser la structure de répertoire et jeter des trucs dans zipOutputStream code> s vous-même.
BTW, cet exemple est bouché. Il a quelques problèmes de compilation majeurs (tels que non itération correctement sur les fichiers de l'annuaire).
Cette réponse a une très belle mise en œuvre: Stackoverflow.com/a/1399432/134898
Dans de telles zones, il y a généralement quelque chose à considérer d'Apache (ou peut-être plus spécifiquement: Apache Commons). J'ai trouvé ceci: http://commons.apache.org/compress/zip.html a> (je n'ai pas vérifié cependant). P>
Il semble que des fichiers zip "meilleurs", il n'apparaît pas inclure la traversée de répertoire ou quoi que ce soit pour effectuer réellement la copie des fichiers de disque dans le fichier zip.
Consultez zip4j - http://www.lingala.net/zip4j/ p>
J'ai rencontré ce problème aujourd'hui et je refuse de faire une telle merde de niveau inférieure que le JDK veut que nous fassions. Espérons que cette petite bibliothèque fonctionnera p>
Il est même disponible via Maven: MVNREPOSITORY.com/Artifact/net.lingala.zip4j/zip4j < / a>
Il y a une liaison Java de la célèbre bibliothèque 7zip , vous pouvez vérifier à
De l'expérience personnelle, la liaison Java de la bibliothèque 7ZIP est capable de traiter avec ZIP, GZIP, RAR et d'autres formats, à la fois pour la lecture et l'écriture.
EASYZIP4J
Téléchargez-le de GitHub. P>
https: // github. com / willwarren / easyzip4j / téléchargements p>
ou p> (également couvert dans le Readme https: // github. com / willwarren / easyzip4j / blob / maître / readme.md ) p> Ceci est un projet basé sur Maven.
Dépend des communes-io et log4j. N'hésitez pas à éditer! P> p>
Une autre option que vous pouvez vérifier est Il possède la fonctionnalité d'emballage et de déballage standard (sur les flux et du système de fichiers) + de nombreuses méthodes d'assistance pour tester les fichiers dans une archive ou ajouter / supprimer des entrées. P>
Trop de dépendances ... mais bon code.
Actuellement, la seule dépendance est ORG.SLF4J.SLF4J-API