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");
}
}
}
我有一个 .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");
}
}
}