Сохранение XDocument в zip-файл без нехватки памяти - PullRequest
1 голос
/ 12 марта 2020

У меня довольно большой XDocument, который я пытаюсь сохранить в ZipArchive. Приведенный ниже код работает для меня, но из-за ограничения на объем памяти, доступной для меня, он завершается ошибкой OutOfMemoryException при выполнении вызова catalogXDocument.ToString ().

Есть ли способ сохранить 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;
}

1 Ответ

1 голос
/ 12 марта 2020

Это может работать:

using (var entryStream = catalogFile.Open())
{
    catalogXDocument.Save(entryStream);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...