【发布时间】:2009-10-17 07:58:42
【问题描述】:
我有应该进行压缩的代码:
FileStream fs = new FileStream("g:\\gj.txt", FileMode.Open);
FileStream fd = new FileStream("g:\\gj.zip", FileMode.Create);
GZipStream csStream = new GZipStream(fd, CompressionMode.Compress);
byte[] compressedBuffer = new byte[500];
int offset = 0;
int nRead;
nRead = fs.Read(compressedBuffer, offset, compressedBuffer.Length);
while (nRead > 0)
{
csStream.Write(compressedBuffer, offset, nRead);
offset = offset + nRead;
nRead = fs.Read(compressedBuffer, offset, compressedBuffer.Length);
}
fd.Close();
fs.Close();
我认为确实如此,但我想解压缩上面压缩的内容。我有这样的想法:
FileStream fd = new FileStream("g:\\gj.new", FileMode.Create);
FileStream fs = new FileStream("g:\\gj.zip", FileMode.Open);
GZipStream csStream = new GZipStream(fs, CompressionMode.Decompress);
byte[] decompressedBuffer = new byte[500];
int offset = 0;
int nRead;
nRead=csStream.Read(decompressedBuffer, offset, decompressedBuffer.Length);
while (nRead > 0)
{
fd.Write(decompressedBuffer, offset, nRead);
offset = offset + nRead;
nRead = csStream.Read(decompressedBuffer, offset, decompressedBuffer.Length);
}
fd.Close();
fs.Close();
在这里它没有...在进入循环之前我有 nRead = 0...我做错了什么? 我使用的测试文件是最简单的TEXT文件(大小:104字节)...
【问题讨论】:
-
编辑答案以显示读写
-
还要注意 gzip != ".zip"
-
(注意我在发布后修复了一个错误;检查两个
while仅在顶行循环Read(不在底部)。
标签: c# gzipstream compression