std.zip
zip書庫 の読み書きを行います。 etc.c.zlib 圧縮ライブラリを使用しています。BUGS:
- 分割zip書庫には非対応です
- Zip version 20 形式のみ対応です
- 圧縮モード 0 (非圧縮) と 8 (deflate) のみ対応です
- 暗号化には非対応です
- Bugzilla 592
- Bugzilla 1832
- Bugzilla 2137
- Bugzilla 2138
- class ZipException: object.Exception;
- エラー時に送出されます
- class ArchiveMember;
- ZipArchive の一つ一つののメンバを表現
- ushort madeVersion;
- 読み取り専用
- ushort extractVersion;
- 読み取り専用
- ushort flags;
- 書き込み可能: 通常は0
- ushort compressionMethod;
- 書き込み可能: 0は非圧縮、8はdeflate
- std.date.DosFileTime time;
- 書き込み可能: メンバの最終更新日時。DOS の date/time 形式で表現されています
- uint crc32;
- 読み取り専用: 巡回冗長検査 (CRC) 値
- size_t compressedSize;
- 読み取り専用: 圧縮後のデータサイズ
- size_t expandedSize;
- 読み取り専用: 非圧縮状態でのデータサイズ
- ushort diskNumber;
- 読み取り専用: 0
- ushort internalAttributes;
- 書き込み可能
- uint externalAttributes;
- 書き込み可能
- string name;
- 書き込み可能: 通常は、書庫メンバのファイル名です。書庫の directory のインデックス
として内部で使用されていますので、各メンバは書庫内で唯一の name[] を持つ必要が
あります。また、name の変更は directory からメンバを削除してから行わなければなりません。
- ubyte[] extra;
- 書き込み可能: このメンバのExtraデータ
- string comment;
- 書き込み可能: このメンバに関連付けられたコメント
- ubyte[] compressedData;
- 読み取り専用: 圧縮後のデータ
- ubyte[] expandedData;
- 書き込み可能: 非圧縮状態のデータ
- class ZipArchive;
- 書庫全体を表すオブジェクト。
ZipArchives は ArchiveMembers の集まりです
- ubyte[] data;
- 読み取り専用: 書庫全体のデータを表す配列
- uint diskNumber;
- 読み取り専用: 分割zipに非対応なため、常に0です
- uint diskStartDir;
- 読み取り専用: 分割zipに非対応なため、常に0です
- uint numEntries;
- 読み取り専用: directory内のArchiveMemberの個数
- uint totalEntries;
- 読み取り専用: numEntries と同義
- string comment;
- 書き込み可能: 書庫につけるコメント。65536バイト未満でなければなりません
- ArchiveMember[string] directory;
- 読み取り専用: メンバの名前によってインデックスのついた配列。
Example:
foreachループによって、全てのメンバにアクセスできます:ZipArchive archive = new ZipArchive(data); foreach (ArchiveMember am; archive.directory) { writefln("member name is '%s'", am.name); }
- this();
- 書庫を新規作成するときに使用するコンストラクタです。
- void addMember(ArchiveMember de);
- de を書庫に追加します。
- void deleteMember(ArchiveMember de);
- de を書庫から削除します。
- void[] build();
- 現在のメンバを元に、書庫ファイルを構築します。
以下のプロパティが設定されます。 data[], diskNumber, diskStartDir, numEntries, totalEntries, directory[]。 またそれぞれの ArchiveMember について、 crc32, compressedSize, compressedData[] が設定されます。
Returns:
書庫全体を表す配列を返します。
- this(void[] buffer);
- 既存の書庫を読み込む際に使用するコンストラクタです
以下のプロパティが設定されます。 data[], diskNumber, diskStartDir, numEntries, totalEntries, comment[], directory[]。 またそれぞれの ArchiveMember について、 madeVersion, extractVersion, flags, compressionMethod, time, crc32, compressedSize, expandedSize, compressedData[], diskNumber, internalAttributes, externalAttributes, name[], extra[], comment[]. 展開済みデータを ArchiveMember から得るには、expand() を使ってください。
Params:
void[] buffer 書庫全体の内容
- ubyte[] expand(ArchiveMember de);
- 書庫のメンバ de の内容を展開し、
展開済みデータを返します。
以下のプロパティが設定されます。extractVersion, flags, compressionMethod, time, crc32, compressedSize, expandedSize, expandedData[], name[], extra[].