我有一个.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执行此操作?
答案 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");
}
}
}