DarthShader
Erfahrenes Mitglied
Hallo zusammen,
ich möchte gerne den Inhalt eines Strings (XML Daten) mit einem ZipOutputStream komprimieren. Leider schaffe ich es bisher nur mit GZIPOutputStream, was folgendes Programm demonstriert:
Das funktioniert, die Ausgabe lautet:
Verwende ich jedoch statt GZIPOutputStream die Klasse ZipOutputStream, so erhalte ich folgende Exception:
Kann mir jemand erklären, warum GZIPOutputStream geht, aber ZipOutputStream nicht?
Vielen Dank für Eure Hilfe!
ich möchte gerne den Inhalt eines Strings (XML Daten) mit einem ZipOutputStream komprimieren. Leider schaffe ich es bisher nur mit GZIPOutputStream, was folgendes Programm demonstriert:
Java:
public class CompressedStringTest {
private static final String FILENAME = "test.xml";
public CompressedStringTest() throws IOException {
File file = new File( FILENAME );
String xml = FileUtil.readFile( file );
System.out.println( "xml.getBytes().length: "+ xml.getBytes().length );
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream zipout = new GZIPOutputStream( out );
zipout.write( xml.getBytes() );
System.out.println( "out.toByteArray().length: " + out.toByteArray().length);
}
public static void main( String[] args ) throws IOException {
new CompressedStringTest();
}
}
Das funktioniert, die Ausgabe lautet:
Java:
xml.getBytes().length: 579950
out.toByteArray().length: 52974
Verwende ich jedoch statt GZIPOutputStream die Klasse ZipOutputStream, so erhalte ich folgende Exception:
Java:
Exception in thread "main" java.util.zip.ZipException: no current ZIP entry
at java.util.zip.ZipOutputStream.write(Unknown Source)
at java.io.FilterOutputStream.write(Unknown Source)
at de.test.zip.CompressedStringTest.<init>(CompressedStringTest.java:24)
at de.test.zip.CompressedStringTest.main(CompressedStringTest.java:31)
Kann mir jemand erklären, warum GZIPOutputStream geht, aber ZipOutputStream nicht?
Vielen Dank für Eure Hilfe!