Décompressez le fichier zip en Java

Puisque j'ai eu l'occasion de décompresser le fichier zip avec Java, ce sera un mémo technique à ce moment-là (´ ・ ω ・ ・) Tout d'abord, les trois fichiers à stocker dans le zip (ʻa.txt, dir1 / b" Créez .txt, dir1 / dir2 / c.txt`).

mkdir -p dir1/dir2
touch a.txt dir1/b.txt dir1/dir2/c.txt
echo "AAAAAAAAAA" > a.txt
echo "BBBBBBBBBB" > dir1/b.txt
echo "CCCCCCCCCC" > dir1/dir2/c.txt

Vous pouvez vérifier le contenu créé avec la commande suivante.

find . -name "*.txt" | while read path; do
  echo "---> ${path} <---"
  cat ${path}
done
---> ./a.txt <---
AAAAAAAAAA
---> ./dir1/b.txt <---
BBBBBBBBBB
---> ./dir1/dir2/c.txt <---
CCCCCCCCCC

Maintenant que vous avez confirmé que les trois fichiers ont été créés comme prévu, compressez-les sous forme de fichier text.zip.

$ zip "text.zip" $(find . -name "*.txt")
  adding: a.txt (deflated 45%)
  adding: dir1/b.txt (deflated 45%)
  adding: dir1/dir2/c.txt (deflated 45%)

Enfin, confirmons que le fichier text.zip a été créé avec succès.

$ unzip -l text.zip
Archive:  text.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       11  2018-08-24 23:17   a.txt
       11  2018-08-24 23:17   dir1/b.txt
       11  2018-08-24 23:17   dir1/dir2/c.txt
---------                     -------
       33                     3 files

L'introduction a été allongée, mais si vous voulez décompresser le fichier text.zip dans le répertoire text, le code Java pour le faire est:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class Main {
    public static void main(String[] args) throws IOException {
        var target = Paths.get("text");
        Files.createDirectories(target);
        
        var zipfile = Paths.get("text.zip");
        try (var in = new ZipInputStream(Files.newInputStream(zipfile))) {
            ZipEntry e;
            while ((e = in.getNextEntry()) != null) {
                var dst = Paths.get(target.toString(), e.getName());
                Files.createDirectories(dst.getParent());
                Files.write(dst, in.readAllBytes());
                System.out.printf("inflating: %s%n", dst);
            }
        }
    }
}

Lorsque vous exécutez ce code Java, vous devriez voir un journal similaire au suivant dans la sortie standard dès que text.zip est décompressé dans le répertoire text.

inflating: text\a.txt
inflating: text\dir1\b.txt
inflating: text\dir1\dir2\c.txt

Le fichier text.zip a-t-il été vraiment décompressé dans le répertoire text? Vous pouvez vérifier cela avec une commande comme celle-ci.

$ find ./text -name "*.txt" | while read path; do
>   echo "---> ${path} <---"
>   cat ${path}
> done
---> ./text/a.txt <---
AAAAAAAAAA
---> ./text/dir1/b.txt <---
BBBBBBBBBB
---> ./text/dir1/dir2/c.txt <---
CCCCCCCCCC

Recommended Posts

Décompressez le fichier zip en Java
Exemple pour décompresser le fichier gz en Java
[Java] Lire les fichiers dans src / main / resources
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Accéder à l'interface réseau avec Java
Devinez le code de caractère en Java
Spécifiez l'emplacement Java dans eclipse.ini
Enregistrer la sortie dans un fichier en Java
Analyser l'analyse syntaxique de l'API COTOHA en Java
A propos du traitement de la copie de fichiers en Java
Appelez la super méthode en Java
Obtenez l'URL publique du fichier privé de Flickr en Java
Comment obtenir la longueur d'un fichier audio avec Java
[Java] Comment utiliser la classe File
Référence Java à comprendre dans la figure
Essayez d'utiliser l'API Stream en Java
Appelez l'API de notification Windows en Java
J'ai essayé le nouveau yuan à Java
[Java] Utiliser la technologie cryptographique avec les bibliothèques standard
Organisation des notes dans la tête (Java-Arrangement)
Quelle est la meilleure lecture de fichier (Java)
Essayez d'appeler le service CORBA sur Java 11+
Quelle est la méthode principale en Java?
Lire le fichier xlsx en Java avec Selenium
Comment obtenir la date avec Java
L'histoire de l'écriture de Java dans Emacs
Entrée de la console en Java (comprendre le mécanisme)
Java: placez le fichier de propriétés ResourceBundle n'importe où
[Java8] Recherchez le répertoire et récupérez le fichier
Partition en Java
Pour créer un fichier Zip lors du regroupement des résultats de recherche de base de données en Java
Changements dans Java 11
Mémo: [Java] Si un fichier se trouve dans le répertoire surveillé, traitez-le.
Janken à Java
création de fichier java
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Taux circonférentiel à Java
FizzBuzz en Java
java qui génère un fichier au format vmg au format eml
Concernant les modificateurs transitoires et la sérialisation en Java
L'histoire de la comparaison de chaînes de bas niveau en Java
JAVA: jar, aar, affichez le contenu du fichier
À propos de la confusion observée dans les serveurs Java de démarrage
L'histoire de la fabrication d'un Othello ordinaire à Java
Lire une chaîne dans un fichier PDF avec Java
À propos de l'idée des classes anonymes en Java
ChatWork4j pour l'utilisation de l'API ChatWork en Java
Une histoire sur le JDK à l'ère de Java 11
Mémo organisé dans la tête (syntaxe Java --Control)
Le type d'intersection introduit dans Java 10 est incroyable (?)
L'histoire de l'apprentissage de Java dans la première programmation
Mesurer la taille d'un dossier avec Java
Ressentez le passage du temps même à Java
Organisation des notes dans la tête (Java - édition d'instance)
Un fichier bat qui utilise Java dans Windows
Mémo organisé dans la tête (Java - type de données)
Afficher "Hello World" dans le navigateur à l'aide de Java
[Java] Jugement en saisissant des caractères dans le terminal
Afficher "Hello World" dans le navigateur à l'aide de Java