zoukankan      html  css  js  c++  java
  • C#用Zlib压缩或解压缩字节数组

            /// <summary>
            /// 复制流
            /// </summary>
            /// <param name="input">原始流</param>
            /// <param name="output">目标流</param>
            public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
            {
                byte[] buffer = new byte[2000];
                int len;
                while ((len = input.Read(buffer, 0, 2000)) > 0)
                {
                    output.Write(buffer, 0, len);
                }
                output.Flush();
            }
            /// <summary>
            /// 压缩字节数组
            /// </summary>
            /// <param name="sourceByte">需要被压缩的字节数组</param>
            /// <returns>压缩后的字节数组</returns>
            private static byte[] compressBytes(byte[] sourceByte)
            {
                MemoryStream inputStream = new MemoryStream(sourceByte);
                Stream outStream = compressStream(inputStream);
                byte[] outPutByteArray = new byte[outStream.Length];
                outStream.Position = 0;
                outStream.Read(outPutByteArray, 0, outPutByteArray.Length);
                outStream.Close();
                inputStream.Close();
                return outPutByteArray;
            }
            /// <summary>
            /// 解压缩字节数组
            /// </summary>
            /// <param name="sourceByte">需要被解压缩的字节数组</param>
            /// <returns>解压后的字节数组</returns>
            private static byte[] deCompressBytes(byte[] sourceByte)
            {
                MemoryStream inputStream = new MemoryStream(sourceByte);
                Stream outputStream = deCompressStream(inputStream);
                byte[] outputBytes = new byte[outputStream.Length];
                outputStream.Position = 0;
                outputStream.Read(outputBytes, 0, outputBytes.Length);
                outputStream.Close();
                inputStream.Close();
                return outputBytes;
            }
            /// <summary>
            /// 压缩流
            /// </summary>
            /// <param name="sourceStream">需要被压缩的流</param>
            /// <returns>压缩后的流</returns>
            private static Stream compressStream(Stream sourceStream)
            {
                MemoryStream streamOut = new MemoryStream();
                ZOutputStream streamZOut = new ZOutputStream(streamOut, zlibConst.Z_DEFAULT_COMPRESSION);
                CopyStream(sourceStream, streamZOut);
                streamZOut.finish();
                return streamOut;
            }
            /// <summary>
            /// 解压缩流
            /// </summary>
            /// <param name="sourceStream">需要被解压缩的流</param>
            /// <returns>解压后的流</returns>
            private static Stream deCompressStream(Stream sourceStream)
            {
                MemoryStream outStream = new MemoryStream();
                ZOutputStream outZStream = new ZOutputStream(outStream);
                CopyStream(sourceStream, outZStream);
                outZStream.finish();
                return outStream;
            }

    zlib.NET库下载:http://www.componentace.com/zlib_.NET.htm

  • 相关阅读:
    若依ruoyi summernote 富文本提交数据 部分代码被过滤 修改xss配置可忽略过滤
    java中Map实现1对多
    Windows()64位)下Redis的安装使用
    SpringMvc java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    字符替换
    oracle null 空值排序- NVL,COALESCE , GREATEST ,LEAST
    oracle 日期,时间函数 date,to_date,extract,to_timestamp,last_day,frist_day
    获取树形数据(区域,父子级关系的树形数据)
    git的操作
    MySQL数据库之MyISAM与InnoDB的区别
  • 原文地址:https://www.cnblogs.com/kingBook/p/5970271.html
Copyright © 2011-2022 走看看