【发布时间】:2015-01-07 15:05:22
【问题描述】:
我目前正在从几个数据库查询中生成大量输出。生成的 XML 文件大约为 2GB。 (这是一年的数据)。 为了为客户端节省一些磁盘空间和下载时间,我使用 GZipStream 类将此文件添加到压缩文件中。请参阅下文了解我当前如何将文件压缩为 gz。注意:fi 对象是一个 FileInfo。
using (FileStream inFile = fi.OpenRead())
using (FileStream outFile = File.Create(fi.FullName + ".gz"))
using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
{
byte[] buffer = new byte[65536];
int numRead;
while ((numRead = inFile.Read(buffer, 0, buffer.Length)) != 0)
{
Compress.Write(buffer, 0, numRead);
}
}
此方法工作正常,但需要我将 2GB 文本文件写出到磁盘,然后再次将其全部读回,以便将其添加到 GZipStream 中,然后将其作为压缩文件再次写回。这似乎是在浪费时间。
有没有办法将我的 2GB 字符串直接添加到 GZipStream 而无需先写入磁盘?
【问题讨论】:
-
我不明白你的意思。
-
我希望能够将我的 2GB 字符串直接写入压缩的 gz 文件中的文本文件中。
标签: c# stream compression gzipstream