2017-01-06 4 views
2

ストリームのサイズについて少し質問があります。ここに私の試しです:空のByteArrayOutputStream/ZipOutputStreamの長さは22ですか?

ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
ZipOutputStream zipStream = new ZipOutputStream(outStream); 
zipStream.close(); 
outStream.close(); 
System.err.println(outStream.toByteArray().length); 

結果の長さは常に22です。あなたはなぜ私に説明できますか? ありがとうございます。

答えて

2

ZipOutputStreamはZIPファイル形式を記述しており、ZIPファイル形式には空のZIPファイル内にも常に存在するメタデータが含まれているためです。具体的には、空のジッパーは、中央ディレクトリレコードの終わりが含まれています

https://en.wikipedia.org/wiki/Zip_(file_format)#Limits

.ZIPファイルの最小サイズは22バイトです。このような空のzipファイルには、EOCD(End of Central Directory Record)のみが含まれます。 [0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]

関連する問題