J'ai besoin d'un petit extrait de code qui décompresse quelques fichiers d'un fichier .zip donné et donne les fichiers séparés en fonction du format dans lequel ils se trouvaient dans le fichier compressé. Veuillez poster vos connaissances et m'aider.
131
Réponses:
Avait un peu optimisé la version de peno. L'augmentation des performances est perceptible.
la source
ze
un répertoire. Essayer d'effectuer ces opérations provoquera une exception.Basé sur la réponse de Vasily Sochinsky un peu modifiée et avec une petite correction:
Différences notables
public static
- c'est une méthode utilitaire statique qui peut être n'importe où.File
paramètres carString
sont: / pour les fichiers et on n'a pas pu spécifier où le fichier zip doit être extrait avant. Aussipath + filename
concaténation> https://stackoverflow.com/a/412495/995891throws
- parce que la capture tardive - ajoutez une capture d'essai si cela ne vous intéresse vraiment pas.mkdirs()
est importante.finally
pour éviter les fuites de ressources.Alors
devrait faire l'équivalent de l'original
la source
UTF8 format
. Donc, j'ai utilisé ce code à la place qui utilise la librairie d'Apachecommons-compress
.Voici ma méthode de décompression, que j'utilise:
la source
Android a une API Java intégrée. Découvrez le package java.util.zip .
La classe ZipInputStream est ce que vous devriez examiner. Lisez ZipEntry à partir de ZipInputStream et videz-le dans le système de fichiers / dossier. Vérifiez un exemple similaire pour compresser en fichier zip .
la source
La voie Kotlin
Usage
la source
Bien que les réponses qui sont déjà ici fonctionnent bien, j'ai trouvé qu'elles étaient légèrement plus lentes que ce que j'avais espéré. Au lieu de cela, j'ai utilisé zip4j , qui est à mon avis la meilleure solution en raison de sa vitesse. Cela permettait également différentes options pour la quantité de compression, ce que j'ai trouvé utile.
la source
UPDATE 2016 utilise la classe suivante
Comment utiliser
Autorisations
la source
Selon la réponse @zapl, Décompressez avec le rapport d'avancement:
la source
-> Classe d'assistance (Unzipper.java)
-> mise en page xml (activity_main.xml):
-> permission dans le fichier Menifest:
la source
Voici un ZipFileIterator (comme un java Iterator, mais pour les fichiers zip):
la source
Exemple minimal que j'ai utilisé pour décompresser un fichier spécifique de mon fichier zip dans le dossier de cache de mes applications. J'ai ensuite lu le fichier manifeste en utilisant une méthode différente.
la source
Je travaille avec des fichiers zip que la classe ZipFile de Java n'est pas capable de gérer. Java 8 ne peut apparemment pas gérer la méthode de compression 12 (bzip2 je crois). Après avoir essayé un certain nombre de méthodes, y compris zip4j (qui échoue également avec ces fichiers particuliers en raison d'un autre problème), j'ai eu du succès avec la compression commune d' Apache qui prend en charge des méthodes de compression supplémentaires comme mentionné ici .
Notez que la classe ZipFile ci-dessous n'est pas celle de java.util.zip.
C'est en fait org.apache.commons.compress.archivers.zip.ZipFile donc soyez prudent avec les importations.
Pour Gradle:
la source
Basé sur la réponse de zapl, l'ajout de
try()
aroundCloseable
ferme les flux automatiquement après utilisation.Utilisation
Constant.DefaultBufferSize
(65536
) obtenu deC# .NET 4
Stream.CopyTo de la réponse de Jon Skeet ici: https://stackoverflow.com/a/411605/1876355Je vois toujours juste des messages en utilisant
byte[1024]
ou enbyte[4096]
tampon, je n'ai jamais su que cela pouvait être beaucoup plus volumineux, ce qui améliore les performances et fonctionne toujours parfaitement.Voici le
Stream
code source: https://referencesource.microsoft.com/#mscorlib/system/io/stream.csCependant, je l'ai recomposé, ce
65536
qui est également un multiple de4096
juste pour être sûr.la source
Fichier Zip protégé par mot de passe
si vous souhaitez compresser des fichiers avec un mot de passe, vous pouvez jeter un œil à cette bibliothèque qui peut facilement compresser les fichiers avec un mot de passe:
Zip *: français:
Décompressez:
Rar:
La documentation de cette bibliothèque est assez bonne, je viens d'en ajouter quelques exemples. C'est totalement gratuit et spécialement écrit pour Android.
la source