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

Posted

技术标签:

【中文标题】D:如何将文件添加到 zip 存档中?【英文标题】:D: how to add file to zip archive? 【发布时间】:2015-04-06 09:34:42 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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 文件。

【讨论】:

以上是关于D:如何将文件添加到 zip 存档中?的主要内容,如果未能解决你的问题,请参考以下文章

将文件添加到存档时不要修改文件的编辑日期

将文件添加到 ZIP 存档的子文件夹?

7zip:在C#中,如何将不同目录下的多个同名文件添加到同一个zip文件中?

在 Bash 中使用 ZIP 存档

使用 php 将文件添加到 rar 存档

如何使用 Python zipfile 将文件放入 zip 存档中