C. Data descriptor:

http://www.pkware.com/documents/casestudies/APPNOTE.TXT


C. Data descriptor:

crc-32 4 bytes
compressed size 4 bytes
uncompressed size 4 bytes

This descriptor exists only if bit 3 of the general
purpose bit flag is set (see below). It is byte aligned
and immediately follows the last byte of compressed data.
This descriptor is used only when it was not possible to
seek in the output .ZIP file, e.g., when the output .ZIP file
was standard output or a non-seekable device. For ZIP64(tm) format
archives, the compressed and uncompressed sizes are 8 bytes each.

このdescriptorはgeneral purpose bit flagの3ビット目がセットされているときだけ存在します。(前を参照)
それはバイトの並びで、圧縮データの後ろに付加されます。
このdescriptorは.ZIPファイルの出力をseekできない時にだけ使われます。例えば、ZIPファイルが標準出力やnon-seekable deviceに出力されるときなど。
ZIP64フォーマットの書庫の場合(?)、compressedとuncompressedのサイズはそれぞれ8バイトになります。


When compressing files, compressed and uncompressed sizes
should be stored in ZIP64 format (as 8 byte values) when a
files size exceeds 0xFFFFFFFF. However ZIP64 format may be
used regardless of the size of a file. When extracting, if
the zip64 extended information extra field is present for
the file the compressed and uncompressed sizes will be 8
byte values.

ファイルサイズが0xFFFFFFFFを超えるとき、圧縮ファイルの圧縮/非圧縮サイズはZIP64フォーマットで格納されるべきです。
しかしながらZIP64フォーマットはファイルサイズにかかわらず使用されるかもしれません。
解凍するとき、extra fieldの情報を拡張するzip64が、圧縮/非圧縮サイズを8バイトにするとして提供されるならば。(???)


Although not originally assigned a signature, the value
0x08074b50 has commonly been adopted as a signature value
for the data descriptor record. Implementers should be
aware that ZIP files may be encountered with or without this
signature marking data descriptors and should account for
either case when reading ZIP files to ensure compatibility.
When writing ZIP files, it is recommended to include the
signature value marking the data descriptor record. When
the signature is used, the fields currently defined for
the data descriptor record will immediately follow the
signature.

シグネチャは元々付けられませんでしたが、data descriptor recordのシグネチャとして
0x08074b50が一般的に採用されました。
実装者はシグネチャが、data descriptorsについたり、ついていなかったりすることを意識すべきです。そして互換性を確実にするために、ZIPファイルを読み込むとき、どちらのケースも処理すべきです。
ZIPファイルを作成するときはシグネチャ付きのdata descriptor recordを含めることをおすすめします。
シグネチャが使われたとき、現在のdata descriptor recordのフィールドはシグネチャのすぐ後に続くことになるでしょう。


An extensible data descriptor will be released in a future
version of this APPNOTE. This new record is intended to
resolve conflicts with the use of this record going forward,
and to provide better support for streamed file processing.

拡張できるdata descriptorは将来のバージョンのAPPNOTEでリリースされるでしょう
この新しいレコードは、将来的にこのレコードを使うことの対立を解決し、streamed file processingによりよいサポートを提供することを意図しています。


When the Central Directory Encryption method is used, the data
descriptor record is not required, but may be used. If present,
and bit 3 of the general purpose bit field is set to indicate
its presence, the values in fields of the data descriptor
record should be set to binary zeros.
Central Directory Encryption methodが使われるときdata descriptor recordは必須ではありません、しかしたぶん使われるでしょう。
もしdata descriptor recordが存在して、それが存在することを示すためにgeneral purpose bit fieldの3ビット目がセットされるなら、data descriptor record の値は0のバイナリ列にすべきです。