ZipEntry -> Eigenschaft(en) setzen -> keine Auswirkung?
Stefano Albrecht
- java
Servus Forum,
es geht um Zip-Archive in Java, speziell deren Eigenschaften.
Wenn ich einen Archiveintrag, sprich ein ZipEntry, erstelle, kann ich mit den entsprechenden Mutator-Methoden des Objektes die jeweiligen Eigenschaften setzten, beispielsweise setComment(); für den Kommentar. Ich sollte es jedenfalls können, denn ich erhalte nie das gewünschte Resultat, soll heißen die Eigenschaften werden nicht übernommen.
Hier ein Beispielprogramm, mit dem ich einen einzigen Eintrag in einem neuem Archiv erstelle, ihm einen Kommentar gebe, und ihn anschließend wieder auslese, jedoch ohne den zuvor gesetzten Kommentar (wieso auch immer):
try{
ZipEntry ze;
File zipFile = new File(args[0]);
/***********************************************************************/
ZipOutputStream zos = new ZipOutputStream(
new FileOutputStream(
zipFile
)
);
ze = new ZipEntry("Hallo.txt");
ze.setComment("Dies ist ein Kommenar.");
zos.putNextEntry(ze);
zos.closeEntry();
zos.close();
/***********************************************************************/
ZipInputStream zis = new ZipInputStream(
new FileInputStream(
zipFile
)
);
while((ze = zis.getNextEntry()) != null){
System.out.println(
"\nName: " + ze.getName() +
"\nSize: " + ze.getSize() +
"\nTime: " + ze.getTime() +
"\nComment: " + ze.getComment() +
"\nCompressed size: " + ze.getCompressedSize() +
"\nCRC32: " + ze.getCrc() +
"\nMethod: " + ze.getMethod() +
"\n------------------------"
);
}
}catch(Exception ex){
ex.printStackTrace();
}
Hat jemand Erfahrung mit ZipEntry?
Wieso bleibt der Kommentar nicht erhalten?
Danke.
Freundliche Grüße
Stefano Albrecht
Hallo Stefano!
Ich kann dir zwar im Moment keine konkrete Antwort geben, aber vielleicht hilft dir ja dieser Link zum Sun-Tutorial ...
Servus
Servus flowh,
vielleicht hilft dir ja dieser Link
leider nicht, trotzdem danke (er war dafür zuvor hilfreich).
In dem Abschnitt über die Eintragseigenschaften ("ZIP File Properties") werden nur die Methoden erwähnt, nicht aber eventuelle Fehler bzw. Fehlverhalten. Ich würde auch nicht in diesem Forum fragen, ohne bereits zahlreiche Informationsquellen zum Thema gelesen zu haben. Sie alle brachten mich aber nicht weiter.
Freundliche Grüße
Stefano Albrecht
Hallo Stefano!
Ich weiß zwar nicht, warum deine Code nicht das gewünschte tut, aber ich hab gerade ein bisschen rumprobiert und statt dem ZipInputStream ein ZipFile benutzt:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
public class ZipTest
{
public static void main(String[] args)
{
try {
File file = new File("test.zip");
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(file));
ZipEntry ze = new ZipEntry("Hallo.txt");
ze.setComment("Dies ist ein Kommenar.");
zos.putNextEntry(ze);
zos.closeEntry();
zos.close();
ZipFile zf = new ZipFile(file);
Enumeration en = zf.entries();
while (en.hasMoreElements()) {
ZipEntry entry = (ZipEntry)en.nextElement();
System.out.println(entry.getComment());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Und so funktionierts einwandfrei!
Servus
Servus flowh,
danke, ich werde das morgen testen :~)
Seltsam ist das trotzdem, denn ZipFile verwendet intern nichts anderes, als einen ZipInputStream.
Sobald ich weitere Informationen hierzu habe, werde ich sie eintragen.
Freundliche Grüße
Stefano Albrecht
Hallo,
das ist, wie eine kurze Google-Recherche ergeben hat, ein bekannter
"not a bug"-Bug. :-) Siehe Bug 4201267.
Das Problem steht dort ja recht gut beschrieben, so daß ich nichts weiter
auführen muß, denke ich.
Die Verwendung von ZipFile schafft Abhilfe, wie flowh ja schon geschrieben
hat.
Gruß
Slyh
PS: Die zugehörige Google-Suche war übrigens einfacher kaum möglich:
http://www.google.de/search?q=ZipInputStream comment
Servus Slyh,
das sieht schon sehr vielversprechend aus.
Allerdings ging es mir nicht nur um die Kommentare.
Doch ich denke bei den restlichen Eigenschaften befindet sich das Fehlverhalten vor dem Bildschirm. Probieren geht über studieren.
PS: Die zugehörige Google-Suche war übrigens einfacher kaum möglich:
http://www.google.de/search?q=ZipInputStream comment
Hört sich fast nach einer Unterstellung an ;~)
"comment" kam in meinen Suchausdrücken aus dem oben genanntem Grund nicht vor.
Dankbare Grüße
Stefano Albrecht
Hallo,
Allerdings ging es mir nicht nur um die Kommentare.
Nein? Dafür erwähnst du die Kommentare aber sehr häufig in deinem
Posting. :)
Doch ich denke bei den restlichen Eigenschaften befindet sich das Fehlverhalten vor dem Bildschirm. Probieren geht über studieren.
Was meinst du?
PS: Die zugehörige Google-Suche war übrigens einfacher kaum möglich:
Hört sich fast nach einer Unterstellung an ;~)
Nein, sondern nach einem Vorwurf. :)
"comment" kam in meinen Suchausdrücken aus dem oben genanntem Grund nicht vor.
Wäre aber eine gute Idee gewesen, weil du ja wirklich in deiner
Ausgangsfrage sehr stark auf die Kommentare abzielst.
Macht aber ja auch nix. Das Ziel meiner Aussage war, dich auf die
Google-Suche aufmerksam zu machen. Meistens ist man -- gerade auch
bei Java-Problemen -- nicht alleine mit dem Problem, so daß sich
recht schnell was findet. Viele merken/wissen das nur nicht.
Ein anderer Grund, daß du's nicht gefunden hast, mag auch der sein,
daß du das Problem wohl beim Schreiben des ZIPs gesehen hast. Dem ist
aber nicht so. Der Kommentar wird korrekt ins Archiv geschrieben. Das
kann man mit einem Hex-Editor überprüfen. Die Kommentare werden
nämlich nicht gezippt. Die Dateinamen im Archiv übrigens auch nicht.
Insgesamt ist das ZIP-Format ein sehr einfaches.)
Das nur als weiteren Tipp, falls es mal wieder Probleme damit gibt.
Ach ja, die ZIP-Klassen von Java haben übrigens auch so ihre Probleme
mit Umlauten und mit Slashes oder Backslashes in Pfaden. (Weiß nicht
mehr ob das Problem die Slashes oder die Backslashes waren.) Diese
Aussagen beziehen sich aber auf Java 1.4. Möglicherweise wurde da
in 1.5 schon was gefixt.
Gruß
Slyh
Servus Slyh,
Doch ich denke bei den restlichen Eigenschaften befindet sich das Fehlverhalten vor dem Bildschirm. Probieren geht über studieren.
Was meinst du?
ist ein unzitiertes Zitat von meinem altem Physiklehrer, Herr Becker, aus der Abitur-Zeit:
"Der Fehler liegt nie beim Computer, er sitzt vielmehr vor ihm..."
Ich danke Dir nochmals für Deine Hinweise.
Freundliche Grüße
Stefano Albrecht