ZipOutputStream korrekt verwenden

01/12/2015 - 23:10 von Christoph Schneegans | Report spam
Hallo allerseits!

Ich möchte mit java.util.zip.ZipOutputStream ein .zip-Archiv erstellen.
Leider ist die Dokumentation der Klasse recht dürftig. Mir ist nun
insbesondere unklar, wie Unterverzeichnisse im Archiv korrekt behandelt
werden müssen.

Ich gehe davon aus, daß ich etwa mit

ZipOutputStream zip = ...
ZipEntry entry = new ZipEntry("dir/");
zip.putNextEntry(entry);
zip.closeEntry();

einen Unterverzeichnis-Eintrag und mit

ZipOutputStream zip = ...
ZipEntry entry = new ZipEntry("dir/file.txt");
zip.putNextEntry(entry);
zip.write("abcdef".getBytes());
zip.closeEntry();

einen Datei-Eintrag erstelle.

Gibt es denn überhaupt eine technische Notwendigkeit,
Unterverzeichnis-Eintràge explizit zu erstellen? ZipOutputStream hindert
mich ja nicht daran, _nur_

ZipEntry entry = new ZipEntry("dir/file.txt");

aufzurufen. Die resultierende .zip-Datei hat dann nur einen Eintrag, und
dennoch kann man sie etwa in 7-Zip tadellos öffnen und dort in ein
Verzeichnis "dir" wechseln.

Spielt die Reihenfolge ansonsten eine Rolle? Wàre etwa

ZipEntry entry = new ZipEntry("dir/foo.txt");
...
ZipEntry entry = new ZipEntry("dir/");
...
ZipEntry entry = new ZipEntry("dir/bar.txt");
...

fehlerhaft?

<http://schneegans.de/lv/> · Validator für BCP 47
 

Lesen sie die antworten

#1 ram
02/12/2015 - 14:20 | Warnen spam
Christoph Schneegans writes:
Gibt es denn überhaupt eine technische Notwendigkeit,
Unterverzeichnis-Eintràge explizit zu erstellen?



Ich kenne mich mit Zip-Dateien und mit diesem Teil der
Standardbibliothek von Java SE nicht aus, vermute aber,
daß man Laufzeitfehler, die dabei auftreten, so genauer
diesem Schritt zuordnen kann.

Ähnliche fragen