バイトを aに適切に圧縮ByteArrayOutputStream
し、 aを使用してそれを読み取るにはどうすればよい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
は is -1
. 抽出されたエンティティが圧縮されたエンティティと一致しない理由がわかりません。