c# - 如何使用 C# 创建 Zip 文件并将文件添加到内存中的特定文件夹?
问题描述
我尝试了以下(只是一个快速的 PoC)方法,但我遇到了一个例外:
System.IO.IOException: Message=创建模式下的条目只能写入一次,并且一次只能打开一个条目。
using (MemoryStream zipMS = new MemoryStream())
{
using (ZipArchive zipArchive = new ZipArchive(zipMS, ZipArchiveMode.Create, true))
{
//read the file bytes
//byte[] fileToZipBytes = System.IO.File.ReadAllBytes(fileToZip);
//create the entry - this is the zipped filename
// just end with "/"
ZipArchiveEntry zipFileEntry1 = zipArchive.CreateEntry("folder1/folderchild1/test/test.png");
ZipArchiveEntry zipFileEntry2 = zipArchive.CreateEntry("folder1/folderchild1/test2/test2.png");
//add the file 1 contents
using (Stream zipEntryStream = zipFileEntry1.Open())
using (BinaryWriter zipFileBinary = new BinaryWriter(zipEntryStream))
{
zipFileBinary.Write(ssnewImage1);
}
//add the file 2 contents
using (Stream zipEntryStream2 = zipFileEntry2.Open())
using (BinaryWriter zipFileBinary2 = new BinaryWriter(zipEntryStream2))
{
zipFileBinary2.Write(ssnewImage2);
}
}
using (FileStream finalZipFileStream = new FileStream(@"C:\Users\peters\Desktop\res.zip", FileMode.Create))
{
zipMS.Seek(0, SeekOrigin.Begin);
zipMS.CopyTo(finalZipFileStream);
}
}
希望有人可以帮助我完成这项任务。
干杯
解决方案
推荐阅读
- python - 如何使用 MongoEngine 制作 ArrayField?
- elasticsearch - Elasticsearch 7:根映射定义具有不受支持的参数(mapper_parsing_exception)
- sockets - WinSock:如何 send() 一个 PByte 类型?
- c++ - 调用非构造对象的方法:合法吗?
- python - How to allow characters and whitespaces in an exception in regex?
- javascript - 如何仅使用 Redux 管理 React 表单?没有 redux-forms
- c# - 我的 Raycast2D 在面向一侧时正在注册,但在朝着另一个方向时没有任何东西被“击中”。
- javascript - 如何将 onload 添加到 onchange 函数
- assembly - 指向 putchar 的分支链接导致 ARM 中的分段错误
- nslayoutconstraint - 在 iOS 中以编程方式设置约束使按钮消失