我有一个ZipArchive对象,其中包含我正在修改的XML文件 . 然后我想返回修改后的ZipArchive .
这是我的代码:
var package = File.ReadAllBytes(/* location of existing .zip */);
using (var packageStream = new MemoryStream(package, true))
using (var zipPackage = new ZipArchive(packageStream, ZipArchiveMode.Update))
{
// obtain the specific entry
var myEntry = zipPackage.Entries.FirstOrDefault(entry => /* code elided */));
XElement xContents;
using (var reader = new StreamReader(myEntry.Open()))
{
// read the contents of the myEntry XML file
// then modify the contents into xContents
}
using (var writer = new StreamWriter(myEntry.Open()))
{
writer.Write(xContents.ToString());
}
return packageStream.ToArray();
}
此代码在 packageStream.ToArray() 调用上抛出"Memory stream is not expandable"异常 .
任何人都可以解释我做错了什么,以及更新ZipArchive中现有文件的正确方法是什么?