C# 使用 zip 存档创建 zip 文件 System.IO.Compression
C# create zip file using zip archive System.IO.Compression
这是我想要实现的功能
- 写一个 JSON 文件。
- 写一个PDF文件。
- 为这两个文件创建一个存档
我正在使用System.IO.CompressionZipArchive来实现这个。从文档中,我还没有找到一个好的用例。文档中的示例假设 zip 文件存在。
我想做什么
创建 zipArchive 流写入 JSON 文件和 pdf 文件作为 zip 文件中的条目。
using (var stream = new FileStream(path, FileMode.Create))
{
using (var archive = new ZipArchive(stream, ZipArchiveMode.Create, true))
{
ZipArchiveEntry manifest = archive.CreateEntry(filenameManifest);
using (StreamWriter writerManifest = new StreamWriter(manifest.Open()))
{
writerManifest.WriteLine(JSONObject_String);
}
ZipArchiveEntry pdfFile = archive.CreateEntry(filenameManifest);
using (StreamWriter writerPDF = new StreamWriter(pdfFile.Open()))
{
writerPDF.WriteLine(pdf);
}
}
}
您不关闭 stream
,而是使用“manifest.Open()
”打开。那么它可能没有将所有内容写入 zip。
将其包裹在另一个 using
中,如下所示:
using (var stream = new FileStream(path, FileMode.Create))
{
using (var archive = new ZipArchive(stream, ZipArchiveMode.Create, true))
{
ZipArchiveEntry manifest = archive.CreateEntry(filenameManifest);
using (Stream st = manifest.Open())
{
using (StreamWriter writerManifest = new StreamWriter(st))
{
writerManifest.WriteLine(JSONObject_String);
}
}
ZipArchiveEntry pdfFile = archive.CreateEntry(filenameManifest);
using (Stream st = manifest.Open())
{
using (StreamWriter writerPDF = new StreamWriter(st))
{
writerPDF.WriteLine(pdf);
}
}
}
}
这是我想要实现的功能
- 写一个 JSON 文件。
- 写一个PDF文件。
- 为这两个文件创建一个存档
我正在使用System.IO.CompressionZipArchive来实现这个。从文档中,我还没有找到一个好的用例。文档中的示例假设 zip 文件存在。
我想做什么 创建 zipArchive 流写入 JSON 文件和 pdf 文件作为 zip 文件中的条目。
using (var stream = new FileStream(path, FileMode.Create))
{
using (var archive = new ZipArchive(stream, ZipArchiveMode.Create, true))
{
ZipArchiveEntry manifest = archive.CreateEntry(filenameManifest);
using (StreamWriter writerManifest = new StreamWriter(manifest.Open()))
{
writerManifest.WriteLine(JSONObject_String);
}
ZipArchiveEntry pdfFile = archive.CreateEntry(filenameManifest);
using (StreamWriter writerPDF = new StreamWriter(pdfFile.Open()))
{
writerPDF.WriteLine(pdf);
}
}
}
您不关闭 stream
,而是使用“manifest.Open()
”打开。那么它可能没有将所有内容写入 zip。
将其包裹在另一个 using
中,如下所示:
using (var stream = new FileStream(path, FileMode.Create))
{
using (var archive = new ZipArchive(stream, ZipArchiveMode.Create, true))
{
ZipArchiveEntry manifest = archive.CreateEntry(filenameManifest);
using (Stream st = manifest.Open())
{
using (StreamWriter writerManifest = new StreamWriter(st))
{
writerManifest.WriteLine(JSONObject_String);
}
}
ZipArchiveEntry pdfFile = archive.CreateEntry(filenameManifest);
using (Stream st = manifest.Open())
{
using (StreamWriter writerPDF = new StreamWriter(st))
{
writerPDF.WriteLine(pdf);
}
}
}
}