[JAVA] Ich möchte eine Liste des Inhalts einer Zip-Datei und ihrer unkomprimierten Größe erhalten

Es ist ein technischer Hinweis, weil ich die Möglichkeit hatte, einen Prozess zu implementieren, von dem ich nicht weiß, wie viel Nachfrage in der Welt besteht: eine Liste des Inhalts einer Zip-Datei und ihrer unkomprimierten Größe zu erhalten.

Bereiten Sie als vorläufige Vorbereitung zunächst die Zip-Datei wie folgt vor.

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 ..

Wenn Sie die obigen Befehle in der Reihenfolge von oben ausführen, wird eine Zip-Datei mit dem Namen zipfile.zip erstellt. Um den Inhalt zu überprüfen, dekomprimieren Sie zipfile.zip wie folgt und zeichnen Sie die gespeicherte Datei und die Größenliste vor der Komprimierung auf.

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

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

Die Vorbereitung ist nun abgeschlossen. Der Java-Code für das Thema lautet wie folgt.

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();
		}
	}
}

Wenn Sie dies tun, erhalten Sie eine Ausgabe ähnlich der folgenden: Wenn Sie es vergleichen, können Sie sehen, dass es mit dem Inhalt der Zubereitung (`・ ω ・ ´) Shakin übereinstimmt

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

Recommended Posts

Ich möchte eine Liste des Inhalts einer Zip-Datei und ihrer unkomprimierten Größe erhalten
Ich möchte rekursiv die Oberklasse und die Schnittstelle einer bestimmten Klasse erhalten
Ich möchte eine Liste nur eindeutiger Zeichenfolgen erhalten, indem feste Zeichenfolgen vom Dateinamen ausgeschlossen werden
Ich möchte die MD5-Prüfsumme einer Datei in Java finden und das Ergebnis als Zeichenfolge in hexadezimaler Notation erhalten.
Ich möchte den Inhalt der Absicht var_dump
Ich habe es geschafft, ein Leerzeichen zu bekommen, als ich den Inhalt von Beans in den Textbereich gebracht habe
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Methode aufrufen und die Nummer zählen
Ich habe ein Tool erstellt, um den Unterschied zwischen CSV-Dateien auszugeben
[Spring Boot] Ich möchte meine eigene Eigenschaftendatei hinzufügen und den Wert mit env.getProperty () abrufen.
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
Wenn Sie mit Ruby eine Zip-Datei erstellen möchten, ist dies Rubyzip.
Ich möchte den Feldnamen des [Java] -Felds erhalten. (Alter Ton)
Ich möchte eine Datei mit Ruby im Internet herunterladen und lokal speichern (mit Vorsicht).
Ich möchte den Wert in Ruby erhalten
Geben Sie die Summe jedes Namens und seines Inhalts aus dem Mehrfacharray aus
Ich möchte den Wert von Cell unabhängig vom CellType (Apache POI) transparent erhalten.
Was ich versucht habe, als ich alle Felder einer Bohne bekommen wollte
Ich möchte den Inhalt der Anfrage sehen, ohne vier oder fünf zu sagen
Ich möchte eine Methode einer anderen Klasse aufrufen
Ich möchte die Antwort der Janken-App wissen
Ich möchte den Namen des Posters des Kommentars anzeigen
Ich möchte eine bestimmte Datei mit WatchService überwachen
[Rails] So erhalten Sie den Inhalt starker Parameter
Ich möchte die Bildlaufposition von UITableView zurückgeben!
Ich möchte der Kommentarfunktion eine Löschfunktion hinzufügen
[Rails] Ich möchte das Linkziel von link_to auf einer separaten Registerkarte anzeigen
Auch wenn ich den Inhalt eines Datenobjekts in Java in JSON konvertieren möchte, gibt es einen Zirkelverweis ...
Ich möchte herausfinden, welche Java-Version die JAR-Datei hat, die ich habe
Als ich zu IntelliJ wechselte, gab es einen großen Unterschied in der Codierung der Eigenschaftendatei.
Ich habe einen Blick in die Java HashMap geworfen
[Rails] [Bootstrap] Ich möchte die Schriftgröße entsprechend ändern
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich möchte Tomcat auf den Server bringen und die Anwendung starten
Ich möchte ein bestimmtes Modell von ActiveRecord ReadOnly erstellen
Ich möchte die Protokollausgabeeinstellung von UtilLoggingJdbcLogger ändern
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
[Ruby] So rufen Sie den Inhalt des Doppel-Hash ab
Ich möchte die maximale Dateigröße für das Hochladen von Dateien für jede URL in Spring Boot steuern
Ich möchte dem select-Attribut einen Klassennamen geben
Ich möchte eine Parkettdatei auch in Ruby erstellen
Ich möchte die Liste der Klassen unter dem Paket rekursiv durchsuchen
So ändern Sie den Inhalt der JAR-Datei, ohne sie zu dekomprimieren
So überprüfen Sie die Erweiterung und Größe der hochgeladenen Dateien
Ich möchte den Inhalt von Assets in der mit capistrano erstellten Umgebung von Grund auf neu erstellen
[jsoup] So erhalten Sie die gesamte Dokumentation
[Ruby] Ich möchte die Reihenfolge der Hash-Tabelle umkehren
[Controller] Ich möchte den numerischen Wert einer bestimmten Spalte aus der Datenbank abrufen (mein Memo).
Ich habe versucht, die Ergebnisse vor und nach der Date-Klasse mit einer geraden Zahl auszudrücken