ZipKomprimierung



  • Hallo,
    bei meinem kleinen Komprimierungstool, lässt sich nur GZIP-Dateien komprimieren. Wenn ich die Optionen zip bei der JComboBox auswähle, wird nur eine leere Zip-Datei erstellt.

    Wo ist der Fehler?

    import java.io.*;
    import java.util.zip.*;
    import javax.swing.JOptionPane;
    
    class Comprimize{
    
      File files[];
      GUI frame;
      String type;
    
      Comprimize(File files[], String type, GUI frame) throws IOException{
        this.files = files;
        this.type = (type.equals("zip"))? "zip" : "gz";
        this.frame = frame;
    
        comprimize();
      }
    
      private void comprimize() throws IOException{
        byte buffer[] = new byte[6000];
        int gelesen = 0;
    
        for(byte i = 0; i < files.length; i++){
          if (files[i].exists() && files[i].isFile()) {
            FileInputStream input = new FileInputStream(files[i]);
            FileOutputStream output = new FileOutputStream(
                files[i].toString() + "." + type);
            DeflaterOutputStream gzipOut;
    
            if(type.equals("zip"))
              gzipOut = new ZipOutputStream(output);
    
            else
              gzipOut = new GZIPOutputStream(output);
    
            while ( (gelesen = input.read(buffer, 0, buffer.length)) != -1)
              gzipOut.write(buffer, 0, gelesen);
    
            gzipOut.close();
            output.close();
            input.close();
    
            JOptionPane.showMessageDialog(frame,
                                          files[i].toString() + " erfolgreich gepackt");
          }
    
          else {
            JOptionPane.showMessageDialog(frame, "Fehler!",
                                          files[i].toString() + "ist ungültig",
                                          JOptionPane.ERROR_MESSAGE);
          }
        }
      }
    }
    

    Es erscheint nicht mal die Meldung, dass es erfolgreich gepackt worden ist, obwohl dieser Befehl in der for-Schleife enthalten ist.

    Liebe Grüße
    Real



  • Ich hab´s mal debuggen lassen:

    int gelesen = 10;
    und byte buffer[]
    [0] = 31;
    [1] = -117;
    [2] = 8;
    der Rest ist 0;

    Bei gzipOut steht da:
    java.util.ZipOutputStream
    written: long = 0

    Ich denke, das war mal das wichtigste...

    Liebe Grüße
    Real



  • Dann geb ich halt Java die Schuld, dass es nicht klappt. Bäh! :p


Anmelden zum Antworten