D:如何将文件添加到zip存档?

时间:2015-04-06 09:34:43

标签: zip d archive

我认为最好将它分成两个单独的问题,以帮助新手找到答案。

Previous question是关于从zip存档中提取数据。但现在我需要任何显示如何将数据添加到zip存档的示例。

有2种情况。 1.独立文件 2.测试字符串如:string foo = "qwerty"; 如何将它发送到zip?

std.zip的docx我找到了方法addMember(ArchiveMember de);,但我不明白如何将数据传递给它。

1 个答案:

答案 0 :(得分:0)

显然,新文档没有显示此模块的用法。我阅读了源代码,并找出了这样做的方法:

import std.file: write;
import std.string: representation;
import std.zip: ArchiveMember, ZipArchive;

void main()
{
    char[] contents = "This is my test data.\n".dup;

    // Create the archive.
    auto zip = new ZipArchive();

    // Create the archive entry
    ArchiveMember ae = new ArchiveMember();
    ae.name = "test.txt";
    ae.expandedData(contents.representation);

    // Add to the entry to the archive.
    zip.addMember(ae);

    // Build the archive. 
    void[] compressed_data = zip.build();

    // Write the archive data to a file.
    write("test.zip", compressed_data);
}

它有效:

$ ./addzip
$ unzip test.zip
Archive:  test.zip
 extracting: test.txt                
$ cat test.txt
This is my test data.

Phobos的下一个版本将在文档中提供示例,说明如何读取和写入zip文件。