zoukankan      html  css  js  c++  java
  • 压缩和解压缩数据流

      //压缩压缩后的字节数组
            public byte[] Compress(byte[] data)
            {
                MemoryStream ms 
    = new MemoryStream();
                Stream zipStream 
    = new GZipStream(ms, CompressionMode.Compress, true);
                zipStream.Write(data, 
    0, data.Length);
                zipStream.Close();
                ms.Position 
    = 0;
                
    byte[] buffer = new byte[ms.Length];
                ms.Read(buffer, 
    0,int.Parse(ms.Length.ToString()));
                
    return buffer;
            }

    //解压缩
      public static byte[] Decompress(byte[] data)
            {
                
    try
                {
                    MemoryStream ms 
    = new MemoryStream(data);
                    Stream zipStream 
    = null;
                    zipStream 
    = new GZipStream(ms, CompressionMode.Decompress);
                    
    byte[] dc_data = null;
                    dc_data 
    = EtractBytesFormStream(zipStream, data.Length);
                    
    return dc_data;
                }
                
    catch
                {
                    
    return null;
                }
            }


            
    public static byte[] EtractBytesFormStream(Stream zipStream, int dataBlock)
            {
                
    try
                {
                    
    byte[] data = null;
                    
    int totalBytesRead = 0;
                    
    while (true)
                    {
                        Array.Resize(
    ref data, totalBytesRead + dataBlock + 1);
                        
    int bytesRead = zipStream.Read(data, totalBytesRead, dataBlock);
                        
    if (bytesRead == 0)
                        {
                            
    break;
                        }
                        totalBytesRead 
    += bytesRead;
                    }
                    Array.Resize(
    ref data, totalBytesRead);
                    
    return data;
                }
                
    catch
                {
                    
    return null;
                }
            }
  • 相关阅读:
    为什么C/C++语言使用指针
    VS2010调试入门指南
    vs2010的11个调试技巧和方法
    排序算法一:快速排序
    Ubuntu下codeblocks汉化
    Ubuntu下Code::Blocks无法编译 /bin/sh: 1: g++ not found 解决办法
    QQ通信原理及QQ是怎么穿透内网进行通信的?
    jackson中自定义处理序列化和反序列化
    Json解析工具Jackson(使用注解)
    jackSon注解– @JsonInclude 注解不返回null值字段
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1541062.html
Copyright © 2011-2022 走看看