gpt4 book ai didi

c# - 使用 XmlWriter 和 GZipStream 从 MemoryStream 写入 gzip 文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:31 25 4
gpt4 key购买 nike

我正在尝试从 MemoryStream 生成一个 gzip 压缩的 XML 文件。这是我到目前为止所拥有的 -

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;

MemoryStream ms = new MemoryStream();
using (XmlWriter writer = XmlWriter.Create(ms, settings))
{
// CREATE XML
}

然后我想获取该流,并将其保存到压缩文件中。我见过很多使用 GZipStream 的示例,但没有一个与此完全匹配。

最佳答案

要将文档保存为压缩文件,您必须创建两个流:

using (var fs = File.Create(fileName))
{
using (var gz = new GZipStream(fs, CompressionMode.Compress))
{
doc.Save(gz);
}
}

它假设您已经创建了一个 XmlDocument。然后调用 XmlDocument.Save(Stream)方法。

如果想直接将XML写入压缩文件,可以这样写:

using (var fs = File.Create(fileName))
{
using (var gz = new GZipStream(fs, CompressionMode.Compress))
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (var writer = XmlWriter.Create(gz, settings))
{
// write xml here
}
}
}

如果您只想编写一个 gzip 压缩的 XML 文件,这就是我建议的方式。

如果您真的想先转到 MemoryStream,然后再转到压缩文件,您可以创建问题中显示的内存流,然后像这样编写。

using (var fs = File.Create(fileName))
{
using (var gz = new GZipStream(fs, CompressionMode.Compress))
{
ms.CopyTo(gz);
}
}

请记住在复制之前设置 ms.Position = 0

关于c# - 使用 XmlWriter 和 GZipStream 从 MemoryStream 写入 gzip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com