Qu'est ce qu'une bonne bibliothèque Java pour compresser/décompresser des fichiers?

J'ai regardé le Zip par défaut de la bibliothèque qui est livré avec le JDK et le Apache de compression libs et je ne suis pas d'accord avec eux pour 3 raisons:

  1. Ils sont gonflés et ont mauvaise conception d'API. Je écrire 50 lignes de chaudière plaque de tableau d'octets de sortie, zip d'entrée, fichier des cours d'eau et fermer pertinentes ruisseaux et attraper les exceptions et les déplacer octet tampons sur mon propre? Pourquoi ne puis-je pas avoir une API simple qui ressemble à ceci Zipper.unzip(InputStream zipFile, File targetDirectory, String password = null) et Zipper.zip(File targetDirectory, String password = null) qui fonctionne?

  2. Il semble que la compression, la décompression détruit le fichier de méta-données et la manipulation de passe est cassé.

  3. Aussi, toutes les bibliothèques que j'ai essayé ont été 2-3x lent par rapport à la ligne de commande zip outils que j'obtiens avec UNIX?

Pour moi (2) et (3) sont des points mineurs, mais je veux vraiment une bonne testés de la bibliothèque avec une interface de ligne de.

  • Autant que je sache, le zip bibliothèques Java utilise sont en code natif sur de nombreuses bibliothèques et de la performance devrait être sensiblement le même. La différence de performances pourrait être la façon dont vous utilisez les données, par exemple par la prise de copies de données avant de l'utiliser.
  • Comme pour le #1, c'est parce que tout le monde n'est tout simplement décompresser un fichier vers un répertoire. Si vous êtes toujours en utilisant le même modèle, pourquoi ne pas simplement écrire un utilitaire classe qui encapsule une des autres et ne ce dont vous avez besoin et il suffit d'utiliser ?
  • parce que c'est plus facile d'utiliser une bibliothèque que pour écrire du code, le code de test, et la maintenance du code.
  • Votre argument est invalide. Regarder le Python zip API: docs.python.org/3/library/zipfile. Vous avez besoin d'1 ligne de code permettant de compresser ou de décompresser des fichiers. Api doit gérer la commune de la cas très bien et je ne vois pas de cas d'utilisation d'un zip API en plus de la compression ou la décompression.
  • la compression d'un fichier ou la décompression d'un fichier est un cas particulier de la compression ou la décompression d'un ruisseau. Si votre API ne pas me laisser écrire un ruisseau et au lieu de me fait écrire un flux de données vers un fichier juste pour que je puisse nourrir que de votre API, votre API est le cerveau endommagé.
  • Bien, donc faire de la bibliothèque un soutien à la fois les fichiers et les flux. C'est un gaspillage de tous les temps - le mien, le vôtre, le sens, et tous les autres Googlers qui va tomber sur ce que nous avons chacun à mettre en œuvre nos propres Utilitaires Zip. Tout comme il est SEC, il n'y a BAISSE - Ne Répétez pas les Autres Personnes.
  • L'utilisation d'Apache Commons Compresser et ZipArchiveInputStream commons.apache.org/proper/commons-compress/zip.html - maven mvnrepository.com/artifact/org.apache.commons/commons-compress
  • Je ne comprendrai jamais pourquoi ce genre de questions à se ferment, comme 'hors sujet'. J'ai la réponse que je cherchais. Alors que faire si ses opinions. C'est exactement ce que je veux, quelqu'opinion honnête de vous recommander une bonne bibliothèque pour le travail.

InformationsquelleAutor pathikrit | 2012-02-17