.Net3.5中调用gzip压缩遇到的问题
日前,使用framework中的gzip进行数据压缩解压缩,遇到两个问题,着实费了些力气才找大,拿出来晒晒
问题一:解压后数据少两个byte?!
public static byte[] Compress(string s)
{
byte[] buf = System.Text.Encoding.UTF8.GetBytes(s);
MemoryStream ms = new MemoryStream();
byte[] rb;
GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true);
gzip.Write(buf, 0, buf.Length);
gzip.Flush();
ms.Position = 0;
rb = new byte[ms.Length];
ms.Read(rb, 0, (int)ms.Length);
gzip.Close();
ms.Close();

return rb;
}
上面这段是一开始我使用的代码,基本正常,可是解压后总是短两个byte。
后来改为下面的代码,问题解决
正确的代码
你发现了问题所在吗,对,就是读取之前需要先关闭GZipStream,从网上看到别人用Using,我试了试,也是不行的!
问题二:解压缩没有例外抛出,也不能读出数据!?
有问题的解压代码
上面代码,无论我怎么执行调试,都不能正确解压,参数就是压缩函数的返回值!可是,意外发现如果调试在读取解压数据之前多停留一段时间,就可以读出数据!
正确执行的解压代码
大家看到,处于无奈增加一个标志,虽然问题解决了,但是总觉得不自在:),希望有高手指点一二!
时隔一年,终得巴山兄解惑,特此鸣谢!同样迷惑者请看巴山的回复。
问题一:解压后数据少两个byte?!
















后来改为下面的代码,问题解决

问题二:解压缩没有例外抛出,也不能读出数据!?


时隔一年,终得巴山兄解惑,特此鸣谢!同样迷惑者请看巴山的回复。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律