我的 GZipStream 只会解压缩文件的第一行。通过 7-zip 提取内容按预期工作,并为我提供了整个文件内容。它还使用 cygwin 和 linux 上的 gunzip 按预期提取,所以我希望这是特定于 O/S 的(Windows 7)。
我不确定如何解决这个问题,所以任何关于这方面的提示都会对我有很大帮助。听起来与此非常相似,但使用 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);
}