Hallo,
ich habe ein Problem mit einer GZIP Stream, den ich bekomme. Leider hat der noch einen individuellen Header und Footer. Da werden noch ein paar Daten im XML-Format mit geschickt.
[XML]
<Header>asdadasd</Header>
<Body>HIER KOMMT DANN DIE GZIP DATEI</Body>
<Footer>blabla</Footer>
[/XML]
Nun habe ich mir einen kleinen Code zusammengetippt, der den Anfang der GZIP-Datei identifizieren soll:
Das funktioniert auch soweit ganz gut (wenn jemand ne Idee hat, wie es eleganter gehen könnte, als raus damit!!).
Leider kann ich das Ende der Datei nicht genau bestimmen und so schmiert mir der Code:
Immer mit der Meldung ab: "Unexpected end of ZLIB input stream", ist ja auch klar, da hängt ja noch Zeugs dran, dass da net hin gehört
Hat jemand eine Idee, wie ich das Ende der Datei raus finden kann. Anscheinend gibt es nicht so etwas wie einen fixe Bytefolge, die das Ende bestimmt!
ich habe ein Problem mit einer GZIP Stream, den ich bekomme. Leider hat der noch einen individuellen Header und Footer. Da werden noch ein paar Daten im XML-Format mit geschickt.
[XML]
<Header>asdadasd</Header>
<Body>HIER KOMMT DANN DIE GZIP DATEI</Body>
<Footer>blabla</Footer>
[/XML]
Nun habe ich mir einen kleinen Code zusammengetippt, der den Anfang der GZIP-Datei identifizieren soll:
Java:
int len;
byte[] buf = new byte[1];
Boolean byte1 = false;
Boolean byte2 = false;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// Anfang des GZip Streams finden, dieser kann eindeutig bestimmt werden
byte[] startBytes = new byte[] { (byte) 0x1F, (byte) 0x8B };
while ((len = msg.readBytes(buf)) > 0) {
if (byte1 && byte2)
baos.write(buf, 0, len);
else {
byte2 = false;
if (buf[0] == startBytes[0])
byte1 = true;
else if (buf[0] == startBytes[1])
{
byte2 = true;
baos.write(startBytes);
}
else
byte1 = false;
}
}
Das funktioniert auch soweit ganz gut (wenn jemand ne Idee hat, wie es eleganter gehen könnte, als raus damit!!).
Leider kann ich das Ende der Datei nicht genau bestimmen und so schmiert mir der Code:
Java:
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
GZIPInputStream in = new GZIPInputStream(bais);
Immer mit der Meldung ab: "Unexpected end of ZLIB input stream", ist ja auch klar, da hängt ja noch Zeugs dran, dass da net hin gehört
Hat jemand eine Idee, wie ich das Ende der Datei raus finden kann. Anscheinend gibt es nicht so etwas wie einen fixe Bytefolge, die das Ende bestimmt!
Zuletzt bearbeitet: