繁体   English   中英

写入文件之前压缩XML

[英]Compressing XML before writing file

我正在尝试将大量数据保存到XML中,并且文件最终的尺寸非常大。 我已经搜索了压缩,但是发现所有示例都首先写入文件,然后将其读取以压缩到另一个文件,最后是大文件和压缩文件,最后我最接近删除写入然后读取的中间步骤,结束了包含一个无扩展名文件的zip文件(我可以在记事本中将其作为XML打开)。

这就是我现在所拥有的:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (FileStream outFile = File.Create(@"File.zip"))
{
    using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
    {
        using (XmlWriter writer = XmlWriter.Create(Compress, settings))
        {
            //write the XML
        }
    }
}

如何使zip内的文件具有XML扩展名?

我认为这可能是对基本面的误解。 据我所知,GZip是压缩系统,而不是归档系统。 在UNIX系统上工作时,它们往往被视为两个独立的事物(而ZIP或RAR压缩会同时执行)。 归档将多个文件放在一个文件中,压缩使该文件更小。

您是否看过以“ filename.tar.gz”下载的Unix软件包? 这通常是命名格式-他们获取了一个存档文件(filename.tar)并对其应用了GZip压缩(filename.tar.gz)

实际上,从技术上讲,通过将文件命名为“ .zip”(这是一种完全不同的,更常用的格式),会造成一些混乱。 如果要遵循UNIX传统,只需将文件命名为“ file.xml.gz”。 如果要存档,请使用Tar存档库。 其他库(例如7-zip)可能具有更简单的压缩系统,例如,如果您希望此文件为.zip,则这两种压缩都可以为您完成,Windows计算机上的人们可以轻松阅读。

我认为您必须先写入临时文件。 看一眼

DotNetPerls

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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