Posts mit dem Label zip werden angezeigt. Alle Posts anzeigen
Posts mit dem Label zip werden angezeigt. Alle Posts anzeigen

Mittwoch, 3. Februar 2010

Ziparchiv im Speicher entpacken

Neulich gab es den Wunsch die zu verarbeitenden XML-Dateien in Form eines Zip-Archives anliefern zu lassen. Weil sich der Dateizugriff verbot, sollte dies im Speicher geschehen. Hier der (verallgemeinerte) Code:

static List<byte[]> extract(byte[] zipData,
String codepage, boolean verbose) {
try {
final JarInputStream jar = new JarInputStream(new
ByteArrayInputStream(zipData));
final ArrayList<byte[]> result = new ArrayList<byte[]>();

final ByteArrayOutputStream bout = new ByteArrayOutputStream();
final byte[] readBuff = new byte[4096];

while (jar.getNextEntry()!=null) {
int len = 0;
while ((len = jar.read(readBuff))!=-1) {
bout.write(readBuff,0,len);
}

result.add(bout.toByteArray());
bout.reset();
}
jar.close();

return result;
} catch (Exception e) {
return null;
}
}