前回の圧縮zip作成プログラムでは、圧縮後のサイズの記録をseekによってファイルポインタをいったん戻すことで書き換えていましたが、zip形式ではそのようなseekによる移動ができない環境のための方法が用意されています。

 まずはZipHeader.optionの3ビット目をオンにすることで、「PK0304ヘッダにはCRC32値やファイルサイズは置いていない」ことを宣言します。なお、この宣言が行われると、PK0304ヘッダ内にある「crc32」「compsize」「uncompsize」は無視されるようになるため、それぞれの値は0のままにしておきます。

 これら3つの値は、CRC32や圧縮後のサイズが算出済みとなる圧縮データの直後でのPK0708ヘッダに書き込みます。