S
Szdnez
Hallo,
ich habe ein byte-Array, welches ich zippen bzw. unzippen möchte. Ich habe soweit auch schon zwei entsprechende funktionierende Methoden geschrieben.
Das einzige was mich stört ist in der unzip()-Methode, dass ich die Länge des Arrays festlegen muss, obwohl ich diese noch gar nicht kenne (was passiert, wenn pDaten doch mal länger ist?) und daraus resultierend auch das System.arraycopy().
Vielleicht hat ja jemand von euch diesbezüglich noch eine clevere Idee?
Dankeschön, Szdnez
ich habe ein byte-Array, welches ich zippen bzw. unzippen möchte. Ich habe soweit auch schon zwei entsprechende funktionierende Methoden geschrieben.
Code:
protected final byte[] zip( final byte[] pDaten )
throws IOException
{
final ByteArrayOutputStream output = new ByteArrayOutputStream();
final ZipOutputStream zip = new ZipOutputStream( output );
zip.setMethod( ZipOutputStream.DEFLATED );
final ZipEntry entry = new ZipEntry( "daten" );
zip.putNextEntry( entry );
zip.write( pDaten );
zip.closeEntry();
final byte[] bytes = output.toByteArray();
zip.close();
output.close();
return bytes;
}
Code:
protected final byte[] unzip( final byte[] pDaten )
throws IOException
{
final InputStream input = new ByteArrayInputStream( pDaten );
// Wie komme ich zu der Länge?
byte[] daten = new byte[ 1024 ];
final ZipInputStream zip = new ZipInputStream( input );
int anzahl = 0;
if ( zip.getNextEntry() != null )
{
anzahl = zip.read( daten );
}
zip.close();
input.close();
byte[] datenKorrekt = new byte[ anzahl ];
System.arraycopy( daten, 0, datenKorrekt, 0, anzahl );
return datenKorrekt;
}
Vielleicht hat ja jemand von euch diesbezüglich noch eine clevere Idee?
Dankeschön, Szdnez