Java 空ByteArrayOutputStream/ZipOutputStream的长度=22?

Java 空ByteArrayOutputStream/ZipOutputStream的长度=22?,java,Java,我有一个关于流大小的小问题。以下是我的尝试: ByteArrayOutputStream outStream = new ByteArrayOutputStream(); ZipOutputStream zipStream = new ZipOutputStream(outStream); zipStream.close(); outStream.close(); System.err.println(outStream.toByteArray().length); 结果长度始终为22。你能解

我有一个关于流大小的小问题。以下是我的尝试:

ByteArrayOutputStream outStream = new ByteArrayOutputStream();
ZipOutputStream zipStream = new ZipOutputStream(outStream);
zipStream.close();
outStream.close();
System.err.println(outStream.toByteArray().length);
结果长度始终为22。你能解释一下为什么吗? 谢谢您的帮助。

因为ZipoutStream正在编写ZIP文件格式,并且ZIP文件格式包含始终存在的元数据,即使在空ZIP文件中也是如此。具体而言,空zip仅包含中心目录记录的结尾:

.ZIP文件的最小大小为22字节。此类空zip文件仅包含中心目录记录EOCD的结尾: [0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]