A B*_*gus 2 c# memorystream gzipstream
我正在尝试编写从MemoryStream
. 这是我到目前为止所拥有的 -
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
MemoryStream ms = new MemoryStream();
using (XmlWriter writer = XmlWriter.Create(ms, settings))
{
// CREATE XML
}
Run Code Online (Sandbox Code Playgroud)
然后我想获取该流,并将其保存到压缩文件中。我见过很多使用 GZipStream 的示例,但没有一个与此完全匹配。
要将文档保存到压缩文件,您必须创建两个流:
using (var fs = File.Create(fileName))
{
using (var gz = new GZipStream(fs, CompressionMode.Compress))
{
doc.Save(gz);
}
}
Run Code Online (Sandbox Code Playgroud)
它假设您已经创建了一个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
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只想编写 gzip 压缩的 XML 文件,这就是我建议的方法。
如果您确实想MemoryStream
先转到压缩文件,然后再转到压缩文件,则可以按照问题中所示创建内存流,然后像这样编写它。
using (var fs = File.Create(fileName))
{
using (var gz = new GZipStream(fs, CompressionMode.Compress))
{
ms.CopyTo(gz);
}
}
Run Code Online (Sandbox Code Playgroud)
ms.Position = 0
请记住在进行复制之前进行设置。
归档时间: |
|
查看次数: |
3746 次 |
最近记录: |