/// <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

转载于:https://www.cnblogs.com/kingBook/p/5970271.html

C#用Zlib压缩或解压缩字节数组相关推荐

  1. python压缩数据数组长度_python – 如何解压缩字节数组中的gzipped数据?

    zlib.decompress(data,15 32)应该自动检测是否有gzip数据或zlib数据. zlib.decompress(data,15 16)应该工作,如果gzip和barf如果zlib ...

  2. java flash 压缩_Java和flash通信中数据的zlib压缩与解压缩

    由于as3的bytearray支持compress和uncompress.所以我们可以在Java端将数据压缩,然后在flash端读取再解压缩,这样数据在传输过程中又会小很多. 下面就介绍使用方法,基于 ...

  3. java实现zlib压缩解压缩:文件、byte[]字节数组,数据流

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现zlib压缩解压缩. 有关ZLib可参见官方主页 http://www.zlib.net/ ZLib可以简单的理解为压缩/解压缩算法, ...

  4. 算法系列之使用赫夫曼编码的实战应用【对文件进行压缩、解压缩】

    1.首先在准备一张图片 2.测试压缩效果 3.测试解压缩效果 将桌面a.jpg删除 4.源代码 package com.zsh.algorithm.tree;import java.io.*; imp ...

  5. Java中关于超长字符串压缩,解压缩问题

    问题:数据库中varchar类型的长度设置为5000,通过一个富文本编辑器编辑了通知内容,接收到了内容字段长度为8000多,unruly数据库时候,数据库报错(字段太长,显示下标越界异常) 解决办法: ...

  6. java使用tar算法压缩解压缩文件、数据流、byte[]字节数组

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用tar算法压缩解压缩文件.数据流.byte[]字节数组 需要添加org.apache.commons.compress包,下载 测试代 ...

  7. java使用BZip算法压缩解压缩文件、数据流、byte[]字节数组

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用BZip算法压缩解压缩文件.数据流.byte[]字节数组 需要添加org.apache.commons.compress包,下载 测试 ...

  8. c#实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#实现gzip压缩解压缩byte[]字节数组,文件,字符串. 测试代码 static void Main() {//测试字符串String inpu ...

  9. java实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现gzip压缩解压缩byte[]字节数组,文件,字符串. 测试代码 public static void main(String[] a ...

最新文章

  1. python代码示例图形-Python使用matplotlib绘制3D图形(代码示例)
  2. SpringCloud教程-消息总线Bus 客户端(client)刷新(SpringCloud版本Greenwich.SR4)
  3. 16位汇编第第四讲常用的7种寻址方式
  4. CentOS7虚拟机搭建xwiki
  5. Android官方开发文档Training系列课程中文版:电池续航时间优化之按需开启广播接收器
  6. 地磅称重软件源码_【漯河衡器】导致地磅称重不准原因及处理措施
  7. es6二进制数组--基础
  8. php-china,php对chinapay的支持
  9. 数据可视化工具在医疗领域的应用
  10. 联邦学习-安全树模型 SecureBoost之终章
  11. 解决Win10系统下运行unity游戏闪退报错问题 包含 人类一败涂地 波西亚时光等
  12. 1 10000用计算机计算,2019新个税计算器 工资一万要交多少税
  13. 程序员之网络安全系列
  14. smartbi v7 Linux,安装Smartbi
  15. Proxy的常见使用——正向代理的使用及配置总结
  16. 无线系列 - MIMO波束赋形技术研究
  17. java代码质量 圈复杂度,代码圈复杂度(Cyclomatic Complexity,CC)和Oclint工具 介绍...
  18. 【风靡全球年近40年的C++过时了吗?C++20来告诉大家】
  19. linux网络编程学习笔记——epoll
  20. [转载]永恒的经典——冰封十大经典战役寄语

热门文章

  1. Client does not support authentication protocol requested by server;
  2. 读取XML文件的节点内的内容
  3. mongoose 笔记
  4. [github] - git使用小结(分支拉取、版本回退)
  5. javascript --- 使用run函数,让100条ajax依次执行
  6. Laravel 中的环境与配置
  7. 13 代码分割之import静动态导入
  8. struts2学习笔记(常见错误)
  9. 如何在PFSense中设置故障转移和负载平衡
  10. Cocos2d-x 3.2 异步动态加载 -- 保卫萝卜开发总结