zoukankan      html  css  js  c++  java
  • 使用DeflateStream压缩与解压

    具体可以了解下:http://msdn.microsoft.com/zh-cn/library/system.io.compression.deflatestream(v=vs.110).aspx

    /// <summary>
            /// Compresses data using the <see cref="DeflateStream"/> algorithm.
            /// </summary>
            /// <param name="data"></param>
            /// <returns></returns>
            public static byte[] DeflateData(byte[] data)
            {
                if (data == null) return null;
    
                byte[] buffer = null;
                using (MemoryStream stream = new MemoryStream())
                {
                    using (DeflateStream inflateStream = new DeflateStream(stream, CompressionMode.Compress, true))
                    {
                        inflateStream.Write(data, 0, data.Length);
                    }
    
                    stream.Seek(0, SeekOrigin.Begin);
    
                    int length = Convert.ToInt32(stream.Length);
                    buffer = new byte[length];
                    stream.Read(buffer, 0, length);
                }
    
                return buffer;
            }
    
            /// <summary>
            /// Inflates compressed data using the <see cref="DeflateStream"/> algorithm.
            /// </summary>
            /// <param name="compressedData"></param>
            /// <returns></returns>
            public static byte[] InflateData(byte[] compressedData)
            {
                if (compressedData == null) return null;
    
                //  initialize the default lenght to the compressed data length times 2
                int deflen = compressedData.Length * 2;
                byte[] buffer = null;
    
                using (MemoryStream stream = new MemoryStream(compressedData))
                {
                    using (DeflateStream inflatestream = new DeflateStream(stream, CompressionMode.Decompress))
                    {
                        using (MemoryStream uncompressedstream = new MemoryStream())
                        {
                            using (BinaryWriter writer = new BinaryWriter(uncompressedstream))
                            {
                                int offset = 0;
                                while (true)
                                {
                                    byte[] tempbuffer = new byte[deflen];
    
                                    int bytesread = inflatestream.Read(tempbuffer, offset, deflen);
    
                                    writer.Write(tempbuffer, 0, bytesread);
    
                                    if (bytesread < deflen || bytesread == 0) break;
                                }   // end while
    
                                uncompressedstream.Seek(0, SeekOrigin.Begin);
                                buffer = uncompressedstream.ToArray();
                            }
                        }
                    }
                }
    
                return buffer;
            }
  • 相关阅读:
    Key&Main Window
    ObjectiveC Runtime IV 【使用隐藏的参数】
    JS中的变量作用域
    Git配置
    ObjectiveC Runtime II 【发送消息 vs 调用函数】
    GDB Vs. WinDbg Commands
    mcs51 串口通信 单片机发 pc收
    csharp截屏
    解决WIN7系统中系统文件的“拒绝访问”的方案
    在VC中创建DLL文件的方法步骤
  • 原文地址:https://www.cnblogs.com/mq0036/p/7018159.html
Copyright © 2011-2022 走看看