DotNetZip - 从项目列表创建 Zip

DotNetZip - Create a Zip from a list of items

我有一个 .NET C# 应用程序,它从数据库中请求一些信息并将记录存储在列表结构中。

public Class Record {

   public string name { get; set; }
   public string surname { get; set; }
}

List<Record> lst = new List<Record>();

我想遍历此列表并将每条记录添加到 zip 文件中。我不想创建一个包含所有这些记录的 txt 文件(按行记录),然后一旦文件保存在磁盘上,就从该文件创建 zip 文件,我的意思是,我不想在磁盘上创建一个中间文件为了从中创建 zip 文件。

如何使用 DotNetZip 执行此操作?

ZipFile 可以采用任何流。

ZipFile.AddEntry(string entryName, Stream stream)

您想创建一个 MemoryStream,然后将该流添加到文件中。

例如:

using (var stream = new MemoryStream()) {
    using (var sw = new StreamWriter(stream)) {
        foreach (var record in lst) {
            sw.WriteLine(record.surname + "," + record.name);
        }
        sw.Flush();
        stream.Position = 0;

        using (ZipFile zipFile = new ZipFile()) {
            zipFile.AddEntry("Records.txt", stream);
            zipFile.Save("archive.zip");
        }
    }
}