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