Je dois vérifier le contenu de gz sur le serveur, mais je n'ai aucun logiciel compatible gz tel que 7zip installé sur mon PC Heppoko Windows 7. Si vous le décompressez sur le serveur, le fichier d'origine est peut-être trop volumineux pour être importé sur votre PC. Java et Eclipse sont les seules choses que je peux utiliser à portée de main - j'ai eu l'occasion de décompresser le fichier gz en Java, donc j'aimerais commémorer l'exemple de code sur Qiita.
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);
}
}
}
Vérifions l'opération. Tout d'abord, créez un fichier texte approprié. Supposons que nous allons créer des fichiers de 1 Mo, 10 Mo et 100 Mo et les nommer respectivement 001mb.txt, 010mb.txt et 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
Pour ces trois fichiers, je vais obtenir un résumé de message et l'utiliser pour vérifier s'il a été décompressé correctement.
$ sha256sum *.txt
f2cddb9f0bb64033f7a9d8979a47d925af06271b2e7d79b99bd9e41ad504616d 001mb.txt
0282119ac4c00a1c14370b65e72f3283d988264fb3240f46b679ada117db3979 010mb.txt
1104a28dd5a4033c5dd495289b590526b60c1f285357dd26af53ed0f5c4898c0 100mb.txt
Puisque j'ai pu obtenir le résumé du message, je vais compresser ces trois fichiers au format GZIP.
$ 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
Décompressons le fichier compressé avec votre propre programme Java. Le fichier Main.java
suivant utilise GZIPUtils :: unzip
pour nommer 001mb.txt.gz, 010mb.txt.gz, 100mb.txt.gz unzipped_001mb.txt, unzipped_010mb.txt, unzipped_100mb.txt, respectivement. Décompressez dans.
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"));
}
}
Après avoir compilé Main.java
, exécutez-le et vérifiez le résultat de l'exécution, vous pouvez voir que trois fichiers, unzipped_001mb.txt, unzipped_010mb.txt et unzipped_100mb.txt, sont créés comme prévu.
$ 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
Si vous vérifiez les résumés de messages pour ces trois fichiers, vous verrez qu'ils sont exactement les mêmes que le fichier txt non compressé. En d'autres termes, GZIPUtils :: unzip
semble fonctionner comme prévu.
$ sha256sum unzipped*
f2cddb9f0bb64033f7a9d8979a47d925af06271b2e7d79b99bd9e41ad504616d unzipped_001mb.txt
0282119ac4c00a1c14370b65e72f3283d988264fb3240f46b679ada117db3979 unzipped_010mb.txt
1104a28dd5a4033c5dd495289b590526b60c1f285357dd26af53ed0f5c4898c0 unzipped_100mb.txt
Recommended Posts