在写入文件之前压缩XML

时间:2013-05-20 19:35:57

标签: c# xml gzip

我正在尝试将大量数据保存到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扩展名?

2 个答案:

答案 0 :(得分:1)

我认为这可能是对基本面的一点误解。据我所知,GZip是一个压缩系统,但不是一个归档系统。使用UNIX系统时,它们往往被视为两个独立的东西(而ZIP或RAR压缩同时执行这两个操作)。归档将大量文件放在一个文件中,压缩使该文件变小。

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

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

答案 1 :(得分:0)

我认为你必须先写一个临时文件。看看

DotNetPerls