英語版
このページの英語版を見る
std.zip
zipアーカイブのデータを読み書きする
zipアーカイブ
フォーマットを使用する。
Standards:
現在の実装は
ISO/iec 21320-1:2015に準拠している、
に準拠している、
- ファイルは非圧縮またはdeflateメカニズムを使ってのみ保存できる、
- 暗号化機能は使用しない、
- デジタル署名機能を使用しない、
- パッチされたデータ機能は使用されない。
- アーカイブは複数のボリュームにまたがってはならない。
- zip爆弾 膨大な量の解凍データを生成する
- 重複したレコードを含むzipアーカイブ
- カメレオンZIPアーカイブ。 アンパックアルゴリズムの実装に依存する
使用方法 使い方は主に2通りある:ZIPアーカイブからファイルを取り出す と zip アーカイブにファイルを保存する。これらは混在させることができる。 アーカイブを読み込み、いくつかのファイルを削除し、他のファイルを追加し、新しいアーカイブを書き込む。 を書き込む)。
Examples:
既存のzipアーカイブを読み込む例:
import std.stdio : writeln, writefln; import std.file : read; import std.zip; void main(string[] args) { // zipファイルをメモリに読み込む auto zip = new ZipArchive(read(args[1])); // すべてのzipメンバを反復処理する writefln("%-10s %-8s Name", "Length", "CRC-32"); foreach (name, am; zip.directory) { // 各メンバーに関するデータを表示する writefln("%10s %08x %s", am.expandedSize, am.crc32, name); assert(am.expandedData.length == 0); // アーカイブメンバーを解凍する zip.expand(am); assert(am.expandedData.length == am.expandedSize); } }zipアーカイブにファイルを書き込む例:
import std.file : write; import std.string : representation; import std.zip; void main() { // 各ファイルに対してArchiveMembersを作成する。 ArchiveMember file1 = new ArchiveMember(); file1.name = "test1.txt"; file1.expandedData("Test data.\n".dup.representation); file1.compressionMethod = CompressionMethod.none; // 圧縮しない ArchiveMember file2 = new ArchiveMember(); file2.name = "test2.txt"; file2.expandedData("More test data.\n".dup.representation); file2.compressionMethod = CompressionMethod.deflate; // 圧縮する // アーカイブを作成し、メンバーを追加する。 ZipArchive zip = new ZipArchive(); // アーカイブ・メンバーを追加する zip.addMember(file1); zip.addMember(file2); // アーカイブを構築する void[] compressed_data = zip.build(); // ファイルに書き込む write("test.zip", compressed_data); }
License:
Authors:
ソース std/zip.d
- class
ZipException
: object.Exception; - エラー時にスローされる。
- enum
CompressionMethod
: ushort; - ArchiveMember で使用される圧縮方法。
none
- 圧縮は行わず、アーカイブする。
deflate
- Deflateアルゴリズム。zlibライブラリを使用して圧縮する。
- class
ArchiveMember
; - アーカイブ内の単一のファイルまたはディレクトリ。
- string
name
; - アーカイブメンバーの名前。 アーカイブディレクトリのインデックスに使用される。各メンバーは 一意な名前でなければならない。最初に ディレクトリから削除せずに変更しないこと。
- ubyte[]
extra
; - このメンバの追加データ・フィールドの内容。以下を参照のこと。 オリジナル・ドキュメント を参照のこと。以下が含まれる場合がある。 文書化されていないサードパーティ・データが含まれることがある。
- string
comment
; - このメンバに関連するコメント。
- ushort
flags
; - このアーカイブの抽出方法に関する情報を含む。参照 オリジナルドキュメント を参照のこと。
- ushort
internalAttributes
; - 内部属性。メンバーが見かけ上バイナリ形式である場合はビット1がセットされる 各レコードの前にレコードの長さがある場合は、ビット 2 が設定される。
- const pure nothrow @nogc @property @safe ushort
extractVersion
(); - このメンバを展開するために必要な zip ファイル形式のバージョン。Returns:このメンバの展開に必要なフォーマット・バージョン。
- const pure nothrow @nogc @property @safe uint
crc32
(); - 巡回冗長検査 (CRC) 値。Returns:CRC32 値。
- const pure nothrow @nogc @property @safe uint
compressedSize
(); - 圧縮されたメンバーのデータサイズ。Returns:圧縮アーカイブのサイズ。
- const pure nothrow @nogc @property @safe uint
expandedSize
(); - 圧縮されていないメンバーのデータサイズ。Returns:非圧縮アーカイブのサイズ。
- pure nothrow @nogc @property @safe ubyte[]
compressedData
(); - 圧縮されたメンバーのデータReturns:圧縮形式のファイルデータ。
- pure nothrow @nogc @property @safe ubyte[]
expandedData
();
@property @safe voidexpandedData
(ubyte[]ed
); - 非圧縮形式のメンバーのデータを取得または設定する。既存のアーカイブが ZipArchive.expand を呼び出す必要がある。Parameters:
ubyte[] ed
展開されたデータ。 Returns:ファイルデータ。 - @property @safe void
fileAttributes
(uintattr
);
const nothrow @nogc @property uintfileAttributes
(); - このアーカイブ・メンバーの OS 固有のファイル属性を取得または設定する。Parameters:
uint attr
属性は std.file.getAttributesまたは std.file.DirEntry.attributes. Returns:ファイル属性、またはファイル属性が互換性のないOS(WindowsとPOSIX)用にエンコードされている場合は0である。 でエンコードされている場合は 0 を返す。 - const pure nothrow @nogc @property @safe DosFileTime
time
();
@property voidtime
(SysTimetime
);
pure nothrow @nogc @property @safe voidtime
(DosFileTimetime
); - このメンバの最終更新時刻を取得または設定する。Parameters:
SysTime time
設定する時間(DosFileTimeとして保存されるが、これは正確さに欠ける)。 Returns:DosFileFormat での最終更新時刻。 - const pure nothrow @nogc @property @safe CompressionMethod
compressionMethod
();
pure @property @safe voidcompressionMethod
(CompressionMethodcm
); - このメンバに使用される圧縮メソッドを取得または設定する。Parameters:
CompressionMethod cm
圧縮方法。 Returns:圧縮方法。See Also: - pure nothrow @nogc @property @safe uint
index
(uintvalue
);
const pure nothrow @nogc @property @safe uintindex
(); - アーカイブ内のこのアーカイブ・メンバーのインデックス。これを アーカイブのメンバーを並べ替えるために別の値を設定する。Parameters:
uint value
設定するインデックス値。 Returns:インデックス。
- class
ZipArchive
; - アーカイブ全体を表すオブジェクト。 ZipArchives は ArchiveMembers のコレクションである。
- string
comment
; - アーカイブのコメント。長さは 65536 バイト以下でなければならない。
- pure nothrow @nogc @property @safe ubyte[]
data
(); - アーカイブの内容全体を表す配列。Returns:アーカイブ全体の内容のデータ。
- const pure nothrow @nogc @property @safe uint
totalEntries
(); - ディレクトリ内のArchiveMembersの数。Returns:アーカイブ内のファイル数。
- const pure nothrow @nogc @property @safe bool
isZip64
();
pure nothrow @nogc @property @safe voidisZip64
(boolvalue
); - アーカイブが Zip64 フォーマットの場合は true。これを true に設定すると、強制的に Zip64 アーカイブをビルドする。Parameters:
bool value
アーカイブを強制的に Zip64 形式で構築する場合は true。 Returns:アーカイブが Zip64 形式である場合に true。 - pure nothrow @nogc @property @safe ArchiveMember[string]
directory
(); - アーカイブの各メンバの名前でインデックス付けされた連想配列。アーカイブのすべてのメンバに foreach ループでアクセスできる:
例:
ZipArchive archive = new ZipArchive(data); foreach (ArchiveMember am; archive.directory) { writefln("member name is '%s'", am.name); }
Returns:すべてのアーカイブメンバを持つ連想配列。 - pure nothrow @nogc @safe this();
- 新しいアーカイブを作成するときに使用するコンストラクタ。
- @safe void
addMember
(ArchiveMemberde
); - アーカイブにメンバーを追加する。ファイルはその場で圧縮される。Parameters:
ArchiveMember de
追加するメンバー Throws:ZipException サポートされていない圧縮メソッドが使われたとき、あるいは が発生する。 - @safe void
deleteMember
(ArchiveMemberde
); - メンバーを削除する
de
をアーカイブから削除する。メンバの名前 の名前を使って削除する要素を検出する。Parameters:ArchiveMember de
削除するメンバ。 - pure @safe void[]
build
(); - アーカイブの現在のメンバーの内容全体を構築する。プロパティ data[]、totalEntries、directory[] を埋める。 各 ArchiveMember に対して、プロパティ crc32、 compressedSize を埋める、 compressedData[]を埋める。Returns:アーカイブ全体を表す配列。Throws:アーカイブを構築できなかった場合に ZipException を返す。
- this(void[]
buffer
); - 既存のアーカイブを読み込むときに使用するコンストラクタ。プロパティ data[], totalEntries, comment[], directory[] を埋める。 各 ArchiveMember に対して プロパティ madeVersion, extractVersion, flags, compressionMethod, time、 crc32、compressedSize、expandedSize、compressedData[]、 internalAttributes、externalAttributes、name[]、extra[]、comment[]。 各 ArchiveMember の展開データを取得するには、expand() を使用する。Parameters:
void[] buffer
アーカイブの内容全体。 Throws:アーカイブが無効な場合やマルウェアが検出された場合は ZipException を返す。 - ubyte[]
expand
(ArchiveMemberde
); - メンバの内容を解凍する。プロパティ extractVersion, flags, compressionMethod, time、 crc32、compressedSize、expandedSize、expandedData[]、name[]、extra[]。Parameters:
ArchiveMember de
解凍されるメンバー。 Returns:展開されたデータ。Throws:エントリが無効な場合や圧縮方式がサポートされていない場合は ZipException が発生する。
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku