我有一些下载gzip文件的代码,并解压缩它们。问题是,我无法解压缩整个文件,只能读取前4096个字节,然后再读取约500个字节。GZipStream没有读取整个文件
Byte[] buffer = new Byte[4096];
int count = 0;
FileStream fileInput = new FileStream("input.gzip", FileMode.Open, FileAccess.Read, FileShare.Read);
FileStream fileOutput = new FileStream("output.dat", FileMode.Create, FileAccess.Write, FileShare.None);
GZipStream gzipStream = new GZipStream(fileInput, CompressionMode.Decompress, true);
// Read from gzip steam
while ((count = gzipStream.Read(buffer, 0, buffer.Length)) > 0)
{
// Write to output file
fileOutput.Write(buffer, 0, count);
}
// Close the streams
...
我检查了下载的文件;压缩时为13MB,并包含一个XML文件。我已经手动解压缩了XML文件,并且内容都在那里。但是,当我使用此代码执行此操作时,它仅输出XML文件的最开始部分。
任何人有任何想法,为什么这可能会发生?
当我在写一个解压缩程序我记得得到这个问题。不过,我已经看到了我最终使用的工作代码,除了被'使用'块封装之外,它看起来像你的。 – 2010-06-18 09:20:18
你在调用Flush()方法吗? – n535 2010-06-18 09:20:31
尝试冲洗(),没有帮助。 – Edgar 2010-06-18 09:26:35