Deflate Uncompress

Iam_Fiction

Mitglied
Hallo, ich möchte aus einer Datei mit Little Endian Byte Order einen komprimierten Teil dekomprimieren. Es handelt sich bei der Kompressionsmethode um DEFLATE. Wenn ich jedoch versuche den Teil zu inflaten bekomme ich einen DataFormatException unkown compression method. An was kann das liegen? Die Bytes sind definitiv mit deflate komprimiert. Gibt es da ein Problem mit der Java Implementierung von Deflate? Welche gravierenden Unterschiede bei Deflate Kompression könnten ein Uncompress behindern? Weiß nur dass die Daten DEFLATE sind...
 
Die Kompressionsmethode muß für die Rückumwandlung nicht übergeben werden. Das muß wohl bereits in den komprimierten Daten enthalten sein.
Dein Format kenne ich jetzt nicht, jedoch kannst Du auf die korrekten Bytes so zugreifen:
Code:
Inflater decompresser = new Inflater();
 decompresser.setInput(output, startByte, anzahlBytes);
 byte[] result = new byte[anzahlBytes];
 int resultLength = decompresser.inflate(result);
 decompresser.end();
String ergebnis = new String(result, 0, resultLength, "UTF-8"); // entsprechendes Encoding

Inflater hat noch einige Kontrollmethoden, mit den Du prüfen kannst, ob Deine komprimierten Daten überhaupt lesbar sind.
Für ZIP und GZIP funktioniert das z.B. hervorrragend, auch wenn das eigentliche Archiv bereits mit Win-ZIP erstellt wurde.
 
Zurück