kaymanhey
Goto Top

Java GZIP funktioniert falsch, gezipptes ist zu klein und lässt sich nicht entzippen

Hallo Leute,

ich habe momentan das Problem, dass ich einen ziemlich langen String mit GZIP zippen möchte, was er auch tut, aber die Länge des gezippten Strings ist viel zu kurz.
Der String der gezippt wird hat ca. 19.000 Zeichen. Nach dem Zippen angeblich nur noch 10. Da die Zeichen und Zahlen in dem String viel zu unterschiedlich sind, ist das unmöglich richtig.
Um dieser Frage nachzugehen, versuche ich es wieder zu entpacken. Leider will das nicht so recht funktionieren:

Hier kommt meine GZIP-Methode:

 private static String compressString(String toCompress) throws IOException{
		String compressed = new String();
		if (toCompress == null || toCompress.length() == 0) {
	        return null;
	    }
	    ByteArrayOutputStream out = new ByteArrayOutputStream();
	    GZIPOutputStream gzip = new GZIPOutputStream(out);
	    gzip.write(toCompress.getBytes(/*"ISO-8859-1"*/)); 
	    compressed = out.toString("ISO-8859-1");  
	    gzip.close();
	    out.close();

	    return compressed;
}

Und hier meine GZIP-Methode zum unzippen:

private static void decompressString(String toDecompress)throws IOException{
		 GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(toDecompress.getBytes("UTF-8")));  
		 BufferedReader bf= new BufferedReader(new InputStreamReader(gis, "UTF-8"));  
		 String outStr = "";  
		 String line;
		 while((line=bf.readLine())!=null){
			 outStr += line;
		 }
		 System.out.println("DEComprimiert: "+outStr);  
}

Wenn ich den Code ausführe, sagt er mir in Zeile 1 der decompressString-Methode folgendes:

java.util.zip.ZipException: Not in GZIP format
	at java.util.zip.GZIPInputStream.readHeader(Unknown Source)
	at java.util.zip.GZIPInputStream.<init>(Unknown Source)
	at java.util.zip.GZIPInputStream.<init>(Unknown Source)
	at FeuSpektral.decompressString(FeuSpektral.java:713)
	at FeuSpektral.load2Ora(FeuSpektral.java:360)
	at Feu2DB$15.widgetSelected(Feu2DB.java:1740)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
	at Feu2DB.runGui(Feu2DB.java:2259)
	at Feu2DB.main(Feu2DB.java:2605)


Hat jemand eine Idee, bitte helft mir

Lieben Dank schon mal

Content-Key: 284989

Url: https://administrator.de/contentid/284989

Ausgedruckt am: 28.03.2024 um 19:03 Uhr