如何在写入时压缩xml文件

时间:2013-02-04 10:06:43

标签: c# asp.net xml

我写了一个大小超过1GB的XML文件,但在编写本文时我想压缩该文件,以便减小xml文件的大小,以便在xmlDoc.Load(fileName)的tile中加载文件最短持续时间。 我编写XML文件的代码是

 using (FileStream fileStream = new FileStream(_logFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    xmlDoc.Load(fileStream);
                    int byteLenght = fileStream.ReadByte();
                    byte[] intBytes = BitConverter.GetBytes(byteLenght);
                    intBytes = Compress(intBytes);
                    xmlDoc.DocumentElement.AppendChild(newelement);
                    fileStream.SetLength(0);
                    xmlDoc.Save(fileStream);
                }

也用于压缩

private static byte[] Compress(byte[] data)
        {
            byte[] retVal;
            using (MemoryStream compressedMemoryStream = new MemoryStream())
            {
                DeflateStream compressStream = new DeflateStream(compressedMemoryStream, CompressionMode.Compress, true);
                compressStream.Write(data, 0, data.Length);
                compressStream.Close();
                retVal = new byte[compressedMemoryStream.Length];
                compressedMemoryStream.Position = 0L;
                compressedMemoryStream.Read(retVal, 0, retVal.Length);
                compressedMemoryStream.Close();
                compressStream.Close();
            }
            return retVal;
        }

但它无法压缩文件。

1 个答案:

答案 0 :(得分:1)

压缩磁盘上的文件对于缩短加载文档所花费的时间并没有太大作用,因为大部分时间都是为XmlDocument构建对象图。它是如此之慢,以至于它可能需要与从磁盘读取未压缩的XML一样长(或更长)。虽然压缩可以节省时间,但如果使用像内部硬盘这样的快速媒体,这只是一个小小的收获。

如果您想提高使用大型XML文件的性能,您需要使用像流式传输文件的XmlReader,而不是一次性加载所有文件。

相关问题