Beispiel zum Entpacken einer gz-Datei in Java

Obwohl ich den Inhalt von gz auf dem Server überprüfen muss, ist auf meinem Heppoko Windows 7-PC keine gz-kompatible Software wie 7zip installiert. Wenn Sie es auf dem Server entpacken, ist die Originaldatei möglicherweise zu groß, um sie auf Ihren PC zu übertragen. Java und Eclipse sind die einzigen Dinge, die ich zur Hand haben kann - ich hatte die Möglichkeit, die gz-Datei in Java zu entpacken, daher möchte ich den Beispielcode an Qiita erinnern.

import java.io.IOException;
import java.io.OutputStream;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.zip.GZIPInputStream;

public class GZIPUtils {
    public static void unzip(Path src, Path dst) {
        try (GZIPInputStream in = new GZIPInputStream(Files.newInputStream(src));
             OutputStream out = Files.newOutputStream(dst)) {
            int len;
            byte[] b = new byte[1024 * 4];
            while ((len = in.read(b)) != -1) {
                out.write(b, 0, len);
            }
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }
}

Lassen Sie uns die Operation überprüfen. Erstellen Sie zunächst eine geeignete Textdatei. Nehmen wir an, wir erstellen 1 MB-, 10 MB- und 100 MB-Dateien und nennen sie 001mb.txt, 010mb.txt bzw. 100mb.txt.

$ cat /dev/urandom | tr -cd [:print:] | head -c 1m   > 001mb.txt
$ cat /dev/urandom | tr -cd [:print:] | head -c 10m  > 010mb.txt
$ cat /dev/urandom | tr -cd [:print:] | head -c 100m > 100mb.txt

Für diese drei Dateien erhalte ich einen Nachrichtenauszug und überprüfe damit, ob er korrekt dekomprimiert wurde.

$ sha256sum *.txt
f2cddb9f0bb64033f7a9d8979a47d925af06271b2e7d79b99bd9e41ad504616d  001mb.txt
0282119ac4c00a1c14370b65e72f3283d988264fb3240f46b679ada117db3979  010mb.txt
1104a28dd5a4033c5dd495289b590526b60c1f285357dd26af53ed0f5c4898c0  100mb.txt

Da ich den Message Digest erhalten konnte, werde ich diese drei Dateien im GZIP-Format komprimieren.

$ gzip *.txt
$ ls -lh *.gz
-rwxrwxrwx 1 dev dev 852K Nov  7 20:33 001mb.txt.gz
-rwxrwxrwx 1 dev dev 8.4M Nov  7 20:33 010mb.txt.gz
-rwxrwxrwx 1 dev dev  84M Nov  7 20:34 100mb.txt.gz

Lassen Sie uns die komprimierte Datei mit Ihrem eigenen Java-Programm dekomprimieren. Die folgende Main.java verwendet GZIPUtils :: unzip, um 001mb.txt.gz, 010mb.txt.gz, 100mb.txt.gz unzipped_001mb.txt, unzipped_010mb.txt bzw. unzipped_100mb.txt zu benennen. Entpacken nach.

Main.java


import java.nio.file.Paths;

public class Main {
    public static void main(String[] args) {
        GZIPUtils.unzip(Paths.get("001mb.txt.gz"), Paths.get("unzipped_001mb.txt"));
        GZIPUtils.unzip(Paths.get("010mb.txt.gz"), Paths.get("unzipped_010mb.txt"));
        GZIPUtils.unzip(Paths.get("100mb.txt.gz"), Paths.get("unzipped_100mb.txt"));
    }
}

Nachdem Sie Main.java kompiliert, ausgeführt und das Ausführungsergebnis überprüft haben, können Sie sehen, dass drei Dateien, unzipped_001mb.txt, unzipped_010mb.txt und unzipped_100mb.txt, wie erwartet erstellt werden.

$ javac Main.java GZIPUtils.java
$ java -cp . Main
$ ls -hl unzipped*
-rwxrwxrwx 1 dev dev 1.0M Nov  7 23:09 unzipped_001mb.txt
-rwxrwxrwx 1 dev dev  10M Nov  7 23:09 unzipped_010mb.txt
-rwxrwxrwx 1 dev dev 100M Nov  7 23:09 unzipped_100mb.txt

Wenn Sie die Nachrichtenübersichten für diese drei Dateien überprüfen, werden Sie feststellen, dass sie genau mit der unkomprimierten txt-Datei übereinstimmen. Mit anderen Worten, GZIPUtils :: unzip scheint wie erwartet zu funktionieren.

$ sha256sum unzipped*
f2cddb9f0bb64033f7a9d8979a47d925af06271b2e7d79b99bd9e41ad504616d  unzipped_001mb.txt
0282119ac4c00a1c14370b65e72f3283d988264fb3240f46b679ada117db3979  unzipped_010mb.txt
1104a28dd5a4033c5dd495289b590526b60c1f285357dd26af53ed0f5c4898c0  unzipped_100mb.txt

Recommended Posts

Beispiel zum Entpacken einer gz-Datei in Java
Entpacken Sie die Zip-Datei in Java
Protokollausgabe in Datei in Java
Beispielcode zum Konvertieren von List in List <String> in Java Stream
[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
So konvertieren Sie eine Datei in ein Byte-Array in Java
So lesen Sie Ihre eigene YAML-Datei (*****. Yml) in Java
Lesen Sie die Java-Eigenschaftendatei in C #
Multithreaded passend zur [Java] Vorlage
Wie man JAVA in 7 Tagen lernt
Ein einfaches Beispiel für Rückrufe in Java
Beispiel für eine EXCEL-Dateiaktualisierung mit JAVA
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
Informationen zur Dateikopierverarbeitung in Java
Versuchen Sie, Yuma in Java zu implementieren
Beispielautomat mit Java
So verketten Sie Zeichenfolgen mit Java
[Für Anfänger] Mindestbeispiel zum Aktualisieren von RecyclerView mit DiffUtils in Java
So ermitteln Sie die Länge einer Audiodatei mit Java
So implementieren Sie den Kalman-Filter mit Java
Versuchen Sie, Project Euler in Java zu lösen
[Java] Verwendung der File-Klasse
Einfach, Slack Bot mit Java zu machen
Java-Referenz zum Verständnis in der Abbildung
Versuchen Sie, n-ary Addition in Java zu implementieren
So fügen Sie eine JAR-Datei in ScalaIDE hinzu
Ändern Sie die Liste <Optional <T >> in Java in Optional <Liste <T >>
Konvertieren Sie SVG-Dateien in Java in PNG-Dateien
Einbetten von Janus Graph in Java
Lesen Sie die xlsx-Datei in Java mit Selenium
So erhalten Sie das Datum mit Java
Fügen Sie Word-Dokumenten in Java Fußnoten hinzu
Von Java nach C und von C nach Java in Android Studio
Fügen Sie dem Cookie in Java das SameSite-Attribut hinzu
Beispielcode zum Abrufen der wichtigsten JDBC-Typwerte in der Java + H2-Datenbank
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Beispielprogramm, das den Hashwert einer Datei in Java zurückgibt
Lesen der log4j-Einstellungsdatei in einem Java-Projekt, das in der JAR-Datei Memo zusammengestellt ist
Java, das eine Datei im Vmg-Format im EML-Format ausgibt
Zwei Möglichkeiten, einen Thread in Java + @ zu starten
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Partisierung in Java
Ich möchte eine E-Mail in Java senden.
[Java] Generics-Beispiel
CORBA scheint in Java SE 11 entfernt zu sein. .. ..
Java-Beispielcode 02
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Java-Beispielcode 03
Selenprobe (Java)
Versuchen Sie, ein Bulletin Board in Java zu erstellen
Änderungen in Java 11
Java GUI Beispiel
Janken in Java
So erhalten Sie eine Klasse von Element in Java
Java-Beispielcode 04