【发布时间】:2016-03-20 13:23:29
【问题描述】:
我有两个文件(我使用 7zip):n1.txt.gz 和 n2.txt.gz。然后我通过命令提示符将它们合并到文件 n12.txt.gz 中:
type n1.txt.gz > n12.txt.gz
type n2.txt.gz >> n12.txt.gz
如果我用 7zip 解压文件 n12.txt.gz,我会得到合并后的原始文件 (n1.txt + n2.txt)。 但是如果我使用这段代码
public static void Decompress2(String fileSource, String fileDestination, int buffsize)
{
using (var fsInput = new FileStream(fileSource, FileMode.Open, FileAccess.Read))
{
using (var fsOutput = new FileStream(fileDestination, FileMode.Create, FileAccess.Write))
{
using (var gzipStream = new GZipStream(fsInput, CompressionMode.Decompress))
{
var buffer = new Byte[buffsize];
int h;
while ((h = gzipStream.Read(buffer, 0, buffer.Length)) > 0)
{
fsOutput.Write(buffer, 0, h);
}
}
}
}
}
我将得到刚刚解压的n12.txt.gz的第一部分,即解压的n1.txt。
为什么 GZipStream 在合并文件的第一部分后停止?以及7zip是如何解压整个文件的?
【问题讨论】:
-
我实际上怀疑合并 gzip 文件是否像你说的那样工作......
-
@ThorstenDittmar 它有效。试试吧。
标签: c# gzipstream