繁体   English   中英

将 XDocument 保存到 zip 文件而不会耗尽内存

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM