Exemple pour décompresser le fichier gz en Java

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

Exemple pour décompresser le fichier gz en Java
Décompressez le fichier zip en Java
Enregistrer la sortie dans un fichier en Java
Exemple de code pour convertir List en List <String> dans Java Stream
[Pour les débutants] Exemple minimum pour afficher RecyclerView en Java
Comment convertir un fichier en tableau d'octets en Java
Comment lire votre propre fichier YAML (*****. Yml) en Java
Lire le fichier de propriétés Java en C #
Multithread pour s'adapter au modèle [Java]
Comment apprendre JAVA en 7 jours
Un exemple simple de rappels en Java
Exemple de mise à jour de fichier EXCEL avec JAVA
Comment utiliser les classes en Java?
Comment nommer des variables en Java
A propos du traitement de la copie de fichiers en Java
Essayez d'implémenter Yuma en Java
Distributeur automatique d'échantillons fabriqué avec Java
Comment concaténer des chaînes avec Java
[Pour les débutants] Exemple minimum pour mettre à jour RecyclerView avec DiffUtils en Java
Comment obtenir la longueur d'un fichier audio avec Java
Comment implémenter le filtre de Kalman par Java
Essayez de résoudre Project Euler en Java
[Java] Comment utiliser la classe File
Facile à créer Slack Bot avec Java
Référence Java à comprendre dans la figure
Essayez d'implémenter l'ajout n-aire en Java
Comment ajouter un fichier jar dans ScalaIDE
Remplacez List <Optional <T >> par Optional <List <T >> en Java
Convertir des fichiers SVG en fichiers PNG en Java
Comment intégrer Janus Graph dans Java
Lire le fichier xlsx en Java avec Selenium
Comment obtenir la date avec Java
Ajouter des notes de bas de page aux documents Word en Java
De Java à C et de C à Java dans Android Studio
Ajouter l'attribut SameSite au cookie en Java
Exemple de code pour obtenir les valeurs de type JDBC clés dans la base de données Java + H2
Exemple de code pour la sérialisation et la désérialisation des énumérations Java Enum et JSON dans Jackson
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
Exemple de programme qui renvoie la valeur de hachage d'un fichier en Java
Comment lire le fichier de paramètres log4j dans un projet Java assemblé dans un fichier jar Memo
java qui génère un fichier au format vmg au format eml
Deux façons de démarrer un thread en Java + @
Lire une chaîne dans un fichier PDF avec Java
Partition en Java
Je souhaite envoyer un e-mail en Java.
[Java] Exemple de génériques
CORBA semble avoir été supprimé dans Java SE 11. .. ..
Exemple de code Java 02
Code pour échapper aux chaînes JSON en Java
Exemple de code Java 03
Échantillon de sélénium (Java)
Essayez de créer un babillard en Java
Changements dans Java 11
Exemple d'interface graphique Java
Janken à Java
Comment obtenir une classe depuis Element en Java
Exemple de code Java 04