2

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

4

2 回答 2

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 计算机上的人员阅读。

于 2013-05-20T19:58:14.327 回答
0

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

DotNetPerls

于 2013-05-20T20:11:21.547 回答