我有一个相当大的XDocument,我试图将其保存到ZipArchive。下面的代码对我有用,但是由于对我可用的内存量的限制,在调用catalogXDocument.ToString()时,它失败并显示OutOfMemoryException。
有什么方法可以将XDocument保存到ZipArchive而不需要将所有内容都保存在内存中吗?
码:
public Stream Zip(XDocument catalogXDocument)
{
MemoryStream memoryStream = new MemoryStream();
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
var catalogFile = archive.CreateEntry("Catalog.xml");
using (var entryStream = catalogFile.Open())
using (var streamWriter = new StreamWriter(entryStream))
{
streamWriter.Write(catalogXDocument.ToString());
}
}
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
}
这可能起作用:
using (var entryStream = catalogFile.Open())
{
catalogXDocument.Save(entryStream);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句