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