Entpacken Sie die Zip-Datei in Java

Da ich die Möglichkeit hatte, die Zip-Datei mit Java zu dekomprimieren, handelt es sich zu diesem Zeitpunkt um ein technisches Memo (´ ・ ω ・ `). Zunächst müssen die drei Dateien (a.txt, dir1 / b) wie folgt im Zip gespeichert werden Erstellen Sie .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

Sie können den erstellten Inhalt mit dem folgenden Befehl überprüfen.

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

Nachdem Sie bestätigt haben, dass die drei Dateien wie erwartet erstellt wurden, komprimieren Sie sie als "text.zip" -Datei.

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

Lassen Sie uns abschließend bestätigen, dass die Datei "text.zip" erfolgreich erstellt wurde.

$ 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

Die Einführung wurde verlängert, aber wenn Sie die Datei "text.zip" in das Verzeichnis "text" entpacken möchten, lautet der Java-Code dazu:

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);
            }
        }
    }
}

Wenn Sie diesen Java-Code ausführen, sollte in der Standardausgabe ein Protokoll ähnlich dem folgenden angezeigt werden, sobald text.zip in das Verzeichnis text entpackt wird.

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

Wurde die Datei "text.zip" wirklich im Verzeichnis "text" entpackt? Sie können dies mit einem Befehl wie dem folgenden überprüfen.

$ 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

Entpacken Sie die Zip-Datei in Java
Beispiel zum Entpacken einer gz-Datei in Java
[Java] Dateien in src / main / resources lesen
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Errate den Zeichencode in Java
Geben Sie den Java-Speicherort in eclipse.ini an
Protokollausgabe in Datei in Java
Analysieren der COTOHA-API-Syntaxanalyse in Java
Informationen zur Dateikopierverarbeitung in Java
Rufen Sie die Super-Methode in Java auf
Rufen Sie die öffentliche URL der privaten Datei von Flickr in Java ab
So ermitteln Sie die Länge einer Audiodatei mit Java
[Java] Verwendung der File-Klasse
Java-Referenz zum Verständnis in der Abbildung
Versuchen Sie es mit der Stream-API in Java
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Ich habe das neue Yuan-Problem in Java ausprobiert
[Java] Verwenden Sie kryptografische Technologie mit Standardbibliotheken
Notizen im Kopf organisieren (Java-Arrangement)
Was ist das beste Lesen von Dateien (Java)
Versuchen Sie, den CORBA-Dienst unter Java 11+ aufzurufen
Was ist die Hauptmethode in Java?
Lesen Sie die xlsx-Datei in Java mit Selenium
So erhalten Sie das Datum mit Java
Die Geschichte des Schreibens von Java in Emacs
Konsoleneingabe in Java (Verständnis des Mechanismus)
Java: Platzieren Sie die ResourceBundle-Eigenschaftendatei an einer beliebigen Stelle
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
Partisierung in Java
So erstellen Sie eine Zip-Datei beim Gruppieren von Datenbanksuchergebnissen in Java
Änderungen in Java 11
Anmerkung: [Java] Wenn sich eine Datei im überwachten Verzeichnis befindet, verarbeiten Sie sie.
Janken in Java
Erstellung von Java-Dateien
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Umfangsrate in Java
FizzBuzz in Java
Java, das eine Datei im Vmg-Format im EML-Format ausgibt
In Bezug auf transiente Modifikatoren und Serialisierung in Java
Die Geschichte des einfachen String-Vergleichs in Java
JAVA: jar, aar, zeige den Inhalt der Datei an
Über die Verwirrung beim Starten von Java-Servern
Die Geschichte eines gewöhnlichen Othello in Java
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Über die Idee anonymer Klassen in Java
ChatWork4j für die Verwendung der ChatWork-API in Java
Eine Geschichte über das JDK in der Java 11-Ära
Organisiertes Memo im Kopf (Java - Control Syntax)
Der in Java 10 eingeführte Schnittpunkttyp ist erstaunlich (?)
Die Geschichte des Lernens von Java in der ersten Programmierung
Messen Sie die Größe eines Ordners mit Java
Spüren Sie den Lauf der Zeit auch in Java
Notizen im Kopf organisieren (Java - Instance Edition)
Eine Bat-Datei, die Java in Windows verwendet
Organisiertes Memo im Kopf (Java - Datentyp)
Zeigen Sie "Hello World" im Browser mit Java an
[Java] Beurteilung durch Eingabe von Zeichen in das Terminal
Zeigen Sie "Hello World" im Browser mit Java an