[JAVA] Je veux obtenir une liste du contenu d'un fichier zip et sa taille non compressée

C'est une note technique car j'ai eu l'opportunité de mettre en place un processus dont je ne sais pas quelle est la demande dans le monde: obtenir une liste du contenu d'un fichier zip et sa taille non compressée.

Tout d'abord, comme préparation préliminaire, préparez le fichier zip selon la procédure suivante.

mkdir -p dir0/dir1/dir2
echo -n 1   > dir0/file1
echo -n 22  > dir0/dir1/file2
echo -n 333 > dir0/dir1/dir2/file3
cd dir0
zip -r ../zipfile.zip *
cd ..

Si vous exécutez les commandes ci-dessus dans l'ordre depuis le haut, un fichier zip appelé zipfile.zip sera créé. Pour vérifier le contenu, décompressez zipfile.zip selon la procédure suivante et enregistrez le fichier stocké et la liste des tailles avant la compression.

unzip -d dst zipfile.zip
cd dst
find . -type f -exec stat -c %n=%sB {} \;

# ./dir1/dir2/file3=3B
# ./dir1/file2=2B
# ./file1=1B

La préparation est maintenant terminée. Le code Java du sujet est le suivant.

Main.java


import java.io.IOException;
import java.util.zip.ZipFile;

public class Main {
	public static void main(String[] args) {
		try (var zipfile = new ZipFile("zipfile.zip")) {
			var entries = zipfile.entries();
			while (entries.hasMoreElements()) {
				var entry = entries.nextElement();
				if (entry.isDirectory()) {
					continue;
				}
				System.out.printf("%s=%dB%n", entry.getName(), entry.getSize());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Si vous faites cela, vous obtiendrez une sortie similaire à ce qui suit: Si vous le comparez, vous pouvez voir qu'il correspond au contenu de la préparation (`・ ω ・ ´) Shakin

dir1/dir2/file3=3B
dir1/file2=2B
file1=1B

Recommended Posts

Je veux obtenir une liste du contenu d'un fichier zip et sa taille non compressée
Je veux obtenir récursivement la superclasse et l'interface d'une certaine classe
Je souhaite obtenir une liste de chaînes de caractères uniques uniquement en excluant les chaînes de caractères fixes du nom de fichier
Je veux trouver la somme de contrôle MD5 d'un fichier en Java et obtenir le résultat sous forme de chaîne de caractères en notation hexadécimale.
Je veux var_dump le contenu de l'intention
J'ai réussi à obtenir un blanc lorsque j'ai apporté le contenu de Beans dans la zone de texte
Je veux faire une liste avec kotlin et java!
Je veux appeler une méthode et compter le nombre
J'ai créé un outil pour afficher la différence du fichier CSV
[Spring Boot] Je veux ajouter mon propre fichier de propriétés et obtenir la valeur avec env.getProperty ().
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
[Ruby] Je souhaite extraire uniquement la valeur du hachage et uniquement la clé
Si vous voulez créer un fichier zip avec Ruby, c'est rubyzip.
Je veux obtenir le nom de champ du champ [Java]. (Vieux ton d'histoire)
Je souhaite télécharger un fichier sur Internet en utilisant Ruby et l'enregistrer localement (avec prudence)
Je veux obtenir la valeur en Ruby
Sortie de la somme de chaque nom et de son contenu à partir du tableau multiple
Je veux obtenir la valeur de Cell de manière transparente quel que soit CellType (Apache POI)
Ce que j'ai essayé quand je voulais obtenir tous les champs d'un haricot
Je veux voir le contenu de Request sans dire quatre ou cinq
Je veux appeler une méthode d'une autre classe
Je veux connaître la réponse de l'application Janken
Je souhaite afficher le nom de l'affiche du commentaire
Je souhaite surveiller un fichier spécifique avec WatchService
[Rails] Comment obtenir le contenu des paramètres forts
Je veux retourner la position de défilement de UITableView!
Je souhaite ajouter une fonction de suppression à la fonction de commentaire
[Rails] Je souhaite afficher la destination du lien de link_to dans un onglet séparé
Même si je souhaite convertir le contenu d'un objet de données en JSON en Java, il existe une référence circulaire ...
Je veux savoir quelle version de java le fichier jar que j'ai est disponible
Lorsque je suis passé à IntelliJ, il y avait une grande différence dans l'encodage du fichier de propriétés.
J'ai jeté un coup d'œil à l'intérieur du Java HashMap
[Rails] [bootstrap] Je souhaite modifier la taille de la police de manière réactive
J'ai essayé de résumer les bases de kotlin et java
Je veux amener Tomcat sur le serveur et démarrer l'application
Je souhaite créer un modèle spécifique d'ActiveRecord ReadOnly
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
Je veux créer une fonction avec kotlin et java!
J'ai essayé JAX-RS et pris note de la procédure
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
[Ruby] Comment récupérer le contenu du double hachage
Je souhaite contrôler la taille de fichier maximale pour le téléchargement de fichiers pour chaque URL dans Spring Boot
Je veux donner un nom de classe à l'attribut select
Je veux créer un fichier Parquet même en Ruby
Je souhaite rechercher de manière récursive la liste des classes sous le package
Comment modifier le contenu du fichier jar sans décompresser
Comment vérifier l'extension et la taille des fichiers téléchargés
Je veux recréer le contenu des actifs à partir de zéro dans l'environnement construit avec capistrano
[jsoup] Comment obtenir la totalité de la documentation
[Ruby] Je souhaite inverser l'ordre de la table de hachage
[Controller] Je veux récupérer la valeur numérique d'une colonne spécifique de la base de données (mon mémo)
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique