Improve this page Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone. Page wiki View or edit the community-maintained wiki page associated with this page.

std.zip

Read/write data in the zip archive format. Makes use of the etc.c.zlib compression library.

BUGS:

License:
Boost License 1.0.

Authors:
Walter Bright

Source:
std/zip.d

class ZipException: object.Exception;
Thrown on error.

class ArchiveMember;
A member of the ZipArchive.

ushort madeVersion;
Read Only

ushort extractVersion;
Read Only

ushort flags;
Read/Write: normally set to 0

ushort compressionMethod;
Read/Write: 0 for compression, 8 for deflate

std.datetime.DosFileTime time;
Read/Write: Last modified time of the member. It's in the DOS date/time format.

uint crc32;
Read Only: cyclic redundancy check (CRC) value

uint compressedSize;
Read Only: size of data of member in compressed form.

uint expandedSize;
Read Only: size of data of member in expanded form.

ushort diskNumber;
Read Only: should be 0.

ushort internalAttributes;
Read/Write

uint externalAttributes;
Read/Write

string name;
Read/Write: Usually the file name of the archive member; it is used to index the archive directory for the member. Each member must have a unique name[]. Do not change without removing member from the directory first.

ubyte[] extra;
Read/Write: extra data for this member.

string comment;
Read/Write: comment associated with this member.

ubyte[] compressedData;
Read Only: data of member in compressed form.

ubyte[] expandedData;
Read/Write: data of member in uncompressed form.

class ZipArchive;
Object representing the entire archive. ZipArchives are collections of ArchiveMembers.

ubyte[] data;
Read Only: array representing the entire contents of the archive.

uint diskNumber;
Read Only: 0 since multi-disk zip archives are not supported.

uint diskStartDir;
Read Only: 0 since multi-disk zip archives are not supported.

uint numEntries;
Read Only: number of ArchiveMembers in the directory.

uint totalEntries;
Read Only: same as totalEntries.

string comment;
Read/Write: the archive comment. Must be less than 65536 bytes in length.

ArchiveMember[string] directory;
Read Only: array indexed by the name of each member of the archive.

Example:
All the members of the archive can be accessed with a foreach loop:
 ZipArchive archive = new ZipArchive(data);
 foreach (ArchiveMember am; archive.directory)
 {
     writefln("member name is '%s'", am.name);
 }

this();
Constructor to use when creating a new archive.

void addMember(ArchiveMember de);
Add de to the archive.

void deleteMember(ArchiveMember de);
Delete de from the archive.

void[] build();
Construct an archive out of the current members of the archive.

Fills in the properties data[], diskNumber, diskStartDir, numEntries, totalEntries, and directory[]. For each ArchiveMember, fills in properties crc32, compressedSize, compressedData[].

Returns:
array representing the entire archive.

this(void[] buffer);
Constructor to use when reading an existing archive.

Fills in the properties data[], diskNumber, diskStartDir, numEntries, totalEntries, comment[], and directory[]. For each ArchiveMember, fills in properties madeVersion, extractVersion, flags, compressionMethod, time, crc32, compressedSize, expandedSize, compressedData[], diskNumber, internalAttributes, externalAttributes, name[], extra[], comment[]. Use expand() to get the expanded data for each ArchiveMember.

Parameters:
void[] buffer the entire contents of the archive.

ubyte[] expand(ArchiveMember de);
Decompress the contents of archive member de and return the expanded data.

Fills in properties extractVersion, flags, compressionMethod, time, crc32, compressedSize, expandedSize, expandedData[], name[], extra[].