[英]Saving XDocument to a zip file without running out of memory
我有一个相当大的 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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.