【发布时间】:2012-06-26 19:23:00
【问题描述】:
我的 GZipStream 只会解压缩文件的第一行。通过 7-zip 提取内容按预期工作,并为我提供了整个文件内容。它还使用 cygwin 和 linux 上的 gunzip 按预期提取,所以我希望这是特定于 O/S 的(Windows 7)。
我不确定如何解决此问题,因此任何有关此问题的提示都会对我有很大帮助。这听起来与this 非常相似,但使用 SharpZLib 会产生同样的结果。
这就是我正在做的事情:
var inputFile = String.Format(@"{0}\{1}", inputDir, fileName);
var outputFile = String.Format(@"{0}\{1}.gz", inputDir, fileName);
var dcmpFile = String.Format(@"{0}\{1}", outputDir, fileName);
using (var input = File.OpenRead(inputFile))
using (var fileOutput = File.Open(outputFile, FileMode.Append))
using (GZipStream gzOutput = new GZipStream(fileOutput, CompressionMode.Compress, true))
{
input.CopyTo(gzOutput);
}
// Now, decompress
using (FileStream of = new FileStream(outputFile, FileMode.Open, FileAccess.Read))
using (GZipStream ogz = new GZipStream(of, CompressionMode.Decompress, false))
using (FileStream wf = new FileStream(dcmpFile, FileMode.Append, FileAccess.Write))
{
ogz.CopyTo(wf);
}
【问题讨论】:
-
如果这是相关的,我还应该补充一点,当我构建文件时,我正在使用 Environment.NewLine() 来分隔每一行。
标签: c# compression gzipstream