zoukankan      html  css  js  c++  java
  • .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,我试了试,也是不行的!
    问题二:解压缩没有例外抛出,也不能读出数据!?
    有问题的解压代码
    上面代码,无论我怎么执行调试,都不能正确解压,参数就是压缩函数的返回值!可是,意外发现如果调试在读取解压数据之前多停留一段时间,就可以读出数据!
    正确执行的解压代码
    大家看到,处于无奈增加一个标志,虽然问题解决了,但是总觉得不自在:),希望有高手指点一二!

    时隔一年,终得巴山兄解惑,特此鸣谢!同样迷惑者请看巴山的回复。
  • 相关阅读:
    2015年 Stoi&Gdoi 反思总结与未来计划
    bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得
    bzoj4518: [Sdoi2016]征途--斜率DP
    BZOJ 1391: [Ceoi2008]order
    BZOJ 2527: [Poi2011]Meteors
    BZOJ 2087: [Poi2010]Sheep
    BZOJ 1283: 序列
    BZOJ 1914: [Usaco2010 OPen]Triangle Counting 数三角形
    BZOJ 3513: [MUTC2013]idiots
    BZOJ 3771: Triple
  • 原文地址:https://www.cnblogs.com/dajianshi/p/1111180.html
Copyright © 2011-2022 走看看