这段deflate解压缩代码有何问题,为什么不能读出数据

最后一只恐龙 2010-10-16 05:15:41
把字节数组_byCompressed解压缩,Read时返回值为0

private void btnDecompress_Click(object sender, EventArgs e)
{
// 内存数据流
MemoryStream memStream = new MemoryStream(_byCompressed);
memStream.Position = 0;

// 解压缩数据流
byte[] byBuffer = new byte[1024];
DeflateStream deflateStream = new DeflateStream(memStream, CompressionMode.Decompress, true);
int nLen = deflateStream.Read(byBuffer, 0, 1024);// 读完nLen=0

// 关闭数据流
deflateStream.Close();
memStream.Close();

// 显示还原后的数据,这个函数就不用管了
ShowBytes(tbDecompressed, byBuffer, nLen);
}
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
z289830131 2010-10-30
  • 打赏
  • 举报
回复

没用过.. 帮顶
最后一只恐龙 2010-10-16
  • 打赏
  • 举报
回复
可以读出数据,但还是原来的数据,因为压缩了一次,又解压缩了一次
最后一只恐龙 2010-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
MemoryStream ms = new MemoryStream();
DeflateStream compressedzipStream = new DeflateStream(ms , CompressionMode.Compress, true);
compressedzipStream.Write(buffer, 0, buffer.Length);
compressed……
[/Quote]
DeflateTest.ReadAllBytesFromStream(zipStream, decompressedBuffer);是怎么实现的?我用zipStream.Read(decompressedBuffer, 0, nLen);还是不行。

再就是你在compressedzipStream.Write(buffer, 0, buffer.Length);的时候,不是把要解压缩的数据又压缩了一遍吗?
wuyq11 2010-10-16
  • 打赏
  • 举报
回复
MemoryStream ms = new MemoryStream();
DeflateStream compressedzipStream = new DeflateStream(ms , CompressionMode.Compress, true);
compressedzipStream.Write(buffer, 0, buffer.Length);
compressedzipStream.Close();
ms.Position = 0;
DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Decompress);
byte[] decompressedBuffer = new byte[buffer.Length + 100];
int totalCount = DeflateTest.ReadAllBytesFromStream(zipStream, decompressedBuffer);
int64 2010-10-16
  • 打赏
  • 举报
回复
没用过,友情UP
最后一只恐龙 2010-10-16
  • 打赏
  • 举报
回复
问题是以下这句

int nLen = deflateStream.Read(byBuffer, 0, 1024);// 读完nLen=0

返回值总是0,也就是没有读出数据,为什么啊。_byCompressed的长度不是0,我实验中是132。

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧