2016-04-12 6 views
0

Meine Kompressionsklasse falsch funktioniert. Wenn ich versuche, einfache Datei zu komprimieren, die den Satz "etwas" enthält, gibt komprimiert und unkomprimiert etwas anderes zurück. Hier ist mein Abblasen Code:Meine deflater Klasse arbeitet incorecctly

public static void inflate(String arg) throws Exception { 
     try { 
      FileInputStream fin = new FileInputStream(arg); 
      InflaterInputStream in = new InflaterInputStream(fin); 

      FileOutputStream fout = new FileOutputStream("def.txt"); 

      int i; 
      while ((i = in.read()) != -1) { 
       fout.write((byte) i); 
       fout.flush(); 
      } 

      fin.close(); 
      fout.close(); 
      in.close(); 

     } catch (Exception e) { 
      System.out.println(e); 
     } 
     new File(arg).delete(); 
     new File("def.txt").renameTo(new File(arg)); 
    } 

    public static void deflate(String arg) throws Exception { 
     try { 
      FileInputStream fin = new FileInputStream(arg); 

      FileOutputStream fout = new FileOutputStream("def.txt"); 
      DeflaterOutputStream out = new DeflaterOutputStream(fout); 

      int i; 
      while ((i = fin.read()) != -1) { 
       out.write((byte) i); 
       out.flush(); 
      } 

      fin.close(); 
      out.close(); 

     } catch (Exception e) { 
      System.out.println(e); 
     } 
     new File(arg).delete(); 
     new File("def.txt").renameTo(new File(arg)); 

    } 

Ich nenne es mit

public static void main(String[] args) { 
     try { 
      Main.deflate(args[0]); 
      Main.inflate(args[0]); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

So wie mein Code zu beheben? Ich denke, dieses Problem besteht nicht darin, den Code zu deflationieren.

Antwort

0

Ihr Code scheint wie erwartet zu funktionieren.

es auf einer Textdatei Ausführen des Wortes ‚etwas‘ gibt eine identische Datei enthält. Um zu bestätigen, dass der Ausgang das gleiche ist, versuchen Sie die folgenden Zeilen bearbeiten:

Test.inflate("def.txt"); 

, die in ihrer Hauptfunktion ist und

FileOutputStream fout = new FileOutputStream("output.txt"); 

aus Ihrer aufblasen Funktion.

Dann kommentieren Sie die folgenden Zeilen in beiden deflate aus() und aufblasen() -Funktionen

//new File(arg).delete(); 
//new File("def.txt").renameTo(new File(arg)); 

Das Programm wird nun eine Eingabedatei nehmen, benutzen ich input.txt mit dem Wort ‚etwas‘ wie in Ihrem Beispiel, und erstellen Sie eine deflationierte Datei def.txt und eine output.txt Datei, die durch das Aufblasen def.txt erstellt wird.

Die Ausgabedatei sollte die Eingabedatei genau übereinstimmen, während die entleerte Datei anders sein sollte. Wenn nicht, müssen weitere Informationen über das fehlende Programm vorhanden sein.

+0

Ich habe es versucht, zu kommentieren, aber es gibt mir leere Datei. –

+0

Ok ich habe Code umgeschrieben und es funktioniert gut. –

Verwandte Themen