DotNetZip - 从项目列表中创建一个Zip

时间:2017-04-05 19:01:46

标签: c# .net visual-studio-2008 .net-3.5 dotnetzip

我有一个.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执行此操作?

1 个答案:

答案 0 :(得分:2)

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");
        }
    }
}