digitalmars.D.learn - Directories in zip
(I'm using D1)
Is it possible to create directories in a zip with std.zip? I couldn't find
any info about that.
So far I've only figured out how to read/write files. (code below)
Or should I be using something else entirely if I want to create archives?
---
module main;
import std.stdio: writefln;
import std.file: read, write;
import std.zip;
void main()
{
auto archive = new ZipArchive;
auto member = new ArchiveMember;
member.compressionMethod = 8; //0: none, 8: deflate
member.name = `hello.txt`;
member.expandedData = cast(ubyte[])`Hello`;
archive.addMember(member);
member = new ArchiveMember;
member.compressionMethod = 8;
member.name = `world.txt`;
member.expandedData = cast(ubyte[])`World!`;
archive.addMember(member);
auto data = archive.build();
write(`test.zip`,data);
auto text = read(`test.zip`);
auto archive2 = new ZipArchive(text);
foreach (ArchiveMember mem; archive2.directory)
{
archive2.expand(mem);
writefln(cast(char[])mem.expandedData);
}
}
---
Dec 18 2009
Ah, well, it seems simply putting the directory in the member.name (ie.
"dir\test.txt") is the way to do it.
Move along, nothing to see here.
"nobody" <somebody somewhere.com> wrote in message
news:hggvh2$1t67$1 digitalmars.com...
(I'm using D1)
Is it possible to create directories in a zip with std.zip? I couldn't
find any info about that.
So far I've only figured out how to read/write files. (code below)
Or should I be using something else entirely if I want to create archives?
---
module main;
import std.stdio: writefln;
import std.file: read, write;
import std.zip;
void main()
{
auto archive = new ZipArchive;
auto member = new ArchiveMember;
member.compressionMethod = 8; //0: none, 8: deflate
member.name = `hello.txt`;
member.expandedData = cast(ubyte[])`Hello`;
archive.addMember(member);
member = new ArchiveMember;
member.compressionMethod = 8;
member.name = `world.txt`;
member.expandedData = cast(ubyte[])`World!`;
archive.addMember(member);
auto data = archive.build();
write(`test.zip`,data);
auto text = read(`test.zip`);
auto archive2 = new ZipArchive(text);
foreach (ArchiveMember mem; archive2.directory)
{
archive2.expand(mem);
writefln(cast(char[])mem.expandedData);
}
}
---
Dec 22 2009








"nobody" <somebody somewhere.com>