我对流大小有一点疑问。这是我的尝试:
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
ZipOutputStream zipStream = new ZipOutputStream(outStream);
zipStream.close();
outStream.close();
System.err.println(outStream.toByteArray().length);
结果长度总是22.你能解释一下为什么吗? 谢谢你的帮助。
答案 0 :(得分:2)
因为ZipOutputStream
正在编写ZIP文件格式,并且ZIP文件格式包含始终存在的元数据,即使在空的zip文件中也是如此。具体来说,空zip只包含中央目录记录结束:
https://en.wikipedia.org/wiki/Zip_(file_format)#Limits
.ZIP文件的最小大小为22个字节。这样的空zip文件只包含一个中央目录记录(EOCD):
[0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]