/// <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[];
int len;
while ((len = input.Read(buffer, , )) > )
{
output.Write(buffer, , 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 = ;
outStream.Read(outPutByteArray, , 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 = ;
outputStream.Read(outputBytes, , 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

C#用Zlib压缩或解压缩字节数组的更多相关文章

  1. qt 调用zlib压缩与解压缩功能

    Zlib是一种免费且通用的压缩库,由于Zlib压缩效果比LZW好,而且解压缩速度快,更重要的是商业软件中使用Zlib不需要缴纳版权费,所以很多游戏都使用Zlib压缩资源文件. Zlib是由Jean-l ...

  2. golang zlib 压缩,解压缩

    package main import ( "bytes" "compress/zlib" "fmt" "io" &qu ...

  3. zip格式压缩、解压缩(C#)

    压缩方法 #region 压缩 /// <summary> /// 压缩 /// </summary> /// <param name="bytes" ...

  4. GZIP压缩、解压缩工具类

    GZIP压缩.解压缩工具类: public class GZIPUtiles { public static String compress(String str) throws IOExceptio ...

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

    转载:https://blog.csdn.net/luanpeng825485697/article/details/78165788 我测试了下压缩byte[],是可以的 using System; ...

  6. Python3 压缩与解压缩(zlib / gzip / bz2 / lzma / zipfile / tarfile)

    本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/72672703 以下代码以Python3.6.1为例 L ...

  7. 【13】MD5编码、Zlib压缩解压缩

    1.MD5加密 /// <summary> /// 使用MD5加密算法 /// </summary> /// <param name="md5MessageSt ...

  8. byte字节数组的压缩

    写入内容到文件 public static void writeBytesToFile() throws IOException{ String s = "aaaaaaaaD等等" ...

  9. Deflater与Inflater的压缩与解压缩

    原文:Deflater与Inflater的压缩与解压缩 package util; import java.util.Arrays; import java.util.zip.Deflater; im ...

随机推荐

  1. C#模板打印excel

    using Microsoft.Office.Interop.Excel; //引用   public void PrintPriviewExcelFile(string filePath) {    ...

  2. Java的关键字和标识符

    1.关键字 Java中共有52个关键字,其中有两个保留字,虽然查到百度百科上说是50个,但是事实确实是有52个(47+3+2). 1.1保留字 Java语言的的保留字是指在Java中商务预留的关键字 ...

  3. Difference between TCP and UDP

    refered from http://www.cyberciti.biz/faq/key-differences-between-tcp-and-udp-protocols/ TCP UDP Rel ...

  4. win10 Incredibuild 兼容

    电脑换了win10,所有的软件都需要重新安装. win10的体验还是很不错的.但是也有一堆的问题.原来的vs2010今天无法再使用分布式编译IncrediBuild. 现象是,虽然可以连上分布式编译的 ...

  5. SVN打包方法

    当有一个版本稳定下来,或者是发布一个版本的时候,我们可以通过SVN打包来进行标记. 打包方法如下: 1.前提:保证本地的工程文件是没有冲突的,均提交到SVN服务器. 2.右键选择SVN中的分支/打包. ...

  6. C# 委托的三种调用示例(同步调用 异步调用 异步回调)

    首先,通过代码定义一个委托和下面三个示例将要调用的方法: 复制代码 代码如下: public delegate int AddHandler(int a,int b);    public class ...

  7. unsupported major.minor version 52.0,错误

    Make sure that all the classes needed by the application have been compiled with a compatible java v ...

  8. 关于System.currentTimeMillis()

    一.时间的单位转换 1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s)1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s)1秒=1,000,000,000 纳秒(ns ...

  9. redirect-action

    功能: 点击login , redirect 到hello.jsp 显示 "hello" 点击redirect, redirect 到 error.jsp 显示 "err ...

  10. Ubuntu下 hadoop2.5.1 (伪分布模式) 配置工作

    一:安装JDK hadoop 是以java语言写的,因此需要在本地计算机上预先安装JDK,安装JDK的方法这里不再详述. 二:创建hadoop用户 为hadoop创建一个专门的用户,将所有的hadoo ...