Stefano Albrecht: ZipEntry -> Eigenschaft(en) setzen -> keine Auswirkung?

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

--
Sancta Simplicitas!
  1. Hallo Stefano!

    Ich kann dir zwar im Moment keine konkrete Antwort geben, aber vielleicht hilft dir ja dieser Link zum Sun-Tutorial ...

    Servus

    --
    flowh .
    Es ist nicht deine Schuld, dass die Welt ist, wie sie ist, es wär nur deine Schuld, wenn sie so bleibt.
       - Die Ärzte
    1. 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

      --
      Sancta Simplicitas!
  2. 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

    --
    flowh .
    Es ist nicht deine Schuld, dass die Welt ist, wie sie ist, es wär nur deine Schuld, wenn sie so bleibt.
       - Die Ärzte
    1. 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

      --
      Sancta Simplicitas!
  3. 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

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

      --
      Sancta Simplicitas!
      1. 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

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

          --
          Sancta Simplicitas!