2016-09-02 8 views
4

仕様に従ってzipファイルを読み込み、各ファイルの情報を中央ディレクトリから取得します。ファイルがzipアーカイブ内のディレクトリかどうかを確認

#define VERSION_NEEDED_OFSSET 6 

UINT16 versionNeeded = (UINT16)*(zipFile + VERSION_NEEDED_OFSSET); 

だから私はいくつかのファイル、およびまた、いくつかのディレクトリをzip形式で圧縮し、私はディレクトリに関する情報を得たとき、私は私が読んドキュメントからversionNeeded = 0x000a

を得た:

私が読んヘッダから

上記のようにマッピングされたファイルを抽出するには、サポートされているZIP仕様の最小バージョンが である必要があります。この値は に基づいています。特定のフォーマットでは、ファイルを解凍できるようにするためにZIPプログラムがサポートしなければなりません( )。複数の機能が がファイルに適用されている場合、最小のバージョンを フィーチャに設定しなければならない(MUST)。新しい機能または機能 の公開されたフォーマット仕様に影響を与える変更は、矛盾を避けるために最後の 公開値よりも高いバージョン番号を使用して実装されます( )。以下に定義する

4.4.3.2現在の最小機能のバージョンは以下のとおりです。

1.0 - デフォルト値

1.1 - ファイルは、ボリュームラベル

2.0である - ファイルは、フォルダ(ディレクトリ)

です

しかし、ファイルタイプを決定するために使用されるZIPヘッダーの部分は何ですか? documentationのファイルタイプを担当するタイプやビットが見つかりません。

答えて

0

4.4.15:誰もがこれを見つけた場合、これを行うための正しい方法は、中央ディレクトリの開始時にオフセットがプラスをチェックすることです、フィールドが外部ファイルはドキュメントから

属性と呼ばれます外部ファイル属性:(4バイト)外部属性のマッピングはホストシステムに依存します( 'version made by'を参照)。 MS-DOSの場合、下位バイトはMS-DOSディレクトリ属性バイトです。 入力が標準入力から来た場合、このフィールドはゼロに設定されます。

UINT32 external_attributes = (UINT32)*(zipFile + 38); 

その後、MSDNからthisの定数に対して、この値に一致します。そのようexternal_attributesを比較し、ディレクトリを一致させるために

if(external_attributes == 0x10) //FILE_ATTRIBUTE_DIRECTORY 
関連する問題