Как я правильно zip байт в ByteArrayOutputStream
, а затем прочитаю, что с помощью ByteArrayInputStream
? У меня есть следующий метод:
private byte[] getZippedBytes(final String fileName, final byte[] input) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(bos);
ZipEntry entry = new ZipEntry(fileName);
entry.setSize(input.length);
zipOut.putNextEntry(entry);
zipOut.write(input, 0, input.length);
zipOut.closeEntry();
zipOut.close();
//Turn right around and unzip what we just zipped
ZipInputStream zipIn = new ZipInputStream(new ByteArrayInputStream(bos.toByteArray()));
while((entry = zipIn.getNextEntry()) != null) {
assert entry.getSize() >= 0;
}
return bos.toByteArray();
}
Когда я выполняю этот код, утверждение внизу не выполняется, потому что entry.size
- -1
. Я не понимаю, почему выделенный объект не соответствует объекту, который был заархивирован.