Sonderzeichen in Dateinamen beim zippen

jean luc

Mitglied
Hallo zusammen,

ich möchte einen Ordner mit Bildern zippen. Das funktioniert auch. Allerdings werden dt. Sonderzeichen im Dateinamen durch kryptische Zeichen ersetzt. Wenn ich die Dateien dann entpacke, haben alle komische Namen. Das stört bei der Weiterverarbeitung.
Muss ich da irgendein encoding setzten oder so?

Hier mein Code:
Code:
      int read = 0;
      FileInputStream input;
      byte[] data = new byte[1024];
      try {

        ZipOutputStream out1 =
          new ZipOutputStream(new FileOutputStream(file));

        out1.setMethod(ZipOutputStream.DEFLATED);
        
        File uebungIcons = new File("Icons/uebungIcons");
        File icons[] = uebungIcons.listFiles();
        
        for (int i=1; i < icons.length; i++) {
          try {
            stdout.println(icons[i].getAbsolutePath());
            stdout.println(icons[i].getName());

            ZipEntry entry = new ZipEntry(icons[i].getName());
            input = new FileInputStream(icons[i].getAbsolutePath());

            out1.putNextEntry(entry);

            while((read = input.read(data, 0, 1024)) != -1)
            out1.write(data, 0, read);
            out1.closeEntry(); 
            input.close();
          }
          catch(Exception e) {
            e.printStackTrace();
          }
        }
        out1.close();
      }
      catch(IOException ex) {
        ex.printStackTrace();
      }

Viele Grüße
Jean
 
Das scheint ein offenes Problem zu sein:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244499

Allerdings dürfte doch allgemein bekannt sein dass Sonderzeichen in Dateinamen sowieso immer nur zu Probleme führen und ein ä dann eben als ae geschrieben werden sollte.

Was du ansonsten probieren könntest ist ein Jar anstatt eines zip zu erstellen und das Jar dann einfach in zip umbennen. Eventuell funktioniert dies da für Jars offenbar UTF-8 für Dateinamen genutzt wird.
 
Zurück