【问题标题】:DotNetZip - Create a Zip from a list of itemsDotNetZip - 从项目列表创建一个 Zip
【发布时间】:2017-08-31 13:28:02
【问题描述】:

我有一个 .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 做到这一点?

【问题讨论】:

  • 它应该适用于任何流。你试过MemoryStream吗?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多