#ZipLib is a Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform. It is implemented as an assembly (installable in the GAC), and thus can easily be incorporated into other projects (in any .NET language).#ZipLib
was ported from the GNU Classpath ZIP library for use with #Develop (http://www.icsharpcode.net/OpenSource/SD) which needed gzip/zip compression.  Later bzip2
compression and tar archiving was added due to popular demand.

官方下载:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

   ZipLib组件与.net自带的Copression比较,在压缩方面更胜一筹,经过BZip2压缩要小很多,亲手测试,不信你也可以试一试。而且这个功能更加强大。下面就是个人做的一个小例子,具体的应用程序源码:
/Files/yank/Compress.rar

using
System;

using System.Data;

using System.IO;

using ICSharpCode.SharpZipLib.Zip.Compression;

using ICSharpCode.SharpZipLib.Zip.Compression.Streams;

using ICSharpCode.SharpZipLib.GZip;



/**////
<summary>

/// Summary description for ICSharp

///
</summary>

public
class ICSharp

{

   
public ICSharp()

   
{

       
//

       
// TODO: Add constructor logic here

       
//

    }

   
/**////
<summary>

   
/// 压缩

   
/// </summary>

   
/// <param name="param"></param>

   
/// <returns></returns>

   
public
string Compress(string param)

   
{

       
byte[] data
= System.Text.Encoding.UTF8.GetBytes(param);

       
//byte[] data = Convert.FromBase64String(param);

        MemoryStream ms
= new MemoryStream();

        Stream stream
= new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(ms);

       
try

       
{

            stream.Write(data,
, data.Length);

        }

       
finally

       
{

            stream.Close();

            ms.Close();

        }

       
return Convert.ToBase64String(ms.ToArray());

    }

   
/**////
<summary>

   
/// 解压

   
/// </summary>

   
/// <param name="param"></param>

   
/// <returns></returns>

   
public
string Decompress(string param)

   
{

       
string commonString="";

       
byte[] buffer=Convert.FromBase64String(param);

        MemoryStream ms
= new MemoryStream(buffer);

        Stream sm
= new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(ms);

       
//这里要指明要读入的格式,要不就有乱码

        StreamReader reader
= new StreamReader(sm,System.Text.Encoding.UTF8);

       
try

       
{

            commonString=reader.ReadToEnd();

        }

       
finally

       
{

            sm.Close();

            ms.Close();

        }

       
return commonString;

    }

}



Encoding.UTF8与Convert.FromBase64String

获取 UTF-8 格式的编码。


Unicode 标准为所有支持脚本中的每个字符分配一个码位(一个数字)。Unicode 转换格式 (UTF) 是一种码位编码方式。Unicode 标准 3.2 版使用下列 UTF:


      UTF-8,它将每个码位表示为一个由 1 至 4 个字节组成的序列。

      UTF-16,它将每个码位表示为一个由 1 至 2 个 16 位整数组成的序列。

      UTF-32,它将每个码位表示为一个 32 位整数。




Convert.FromBase64String 方法

将指定的 String(它将二进制数据编码为 base 64 数字)转换成等效的 8 位无符号整数数组。

它的参数也又一定的要求:

参数是 由基 64 数字、空白字符和尾随填充字符组成。从零开始以升序排列的以 64 为基的数字为大写字符“A”到“Z”、小写字符“a”到“z”、数字“0”到“9”以及符号“+”和“/”。空白字符为 Tab、空格、回车和换行。s 中可以出现任意数目的空白字符,因为所有空白字符都将被忽略。无值字符“=”用于尾部的空白。s 的末尾可以包含零个、一个或两个填充字符。

异常:

异常类型 条件
ArgumentNullException s 为空引用(Visual Basic 中为
Nothing
)。
FormatException s 的长度(忽略空白字符)小于 4。

- 或 -

s 的长度(忽略空白字符)不是 4 的偶数倍。

s 的长度(忽略空白字符)不是 4 的偶数倍。

利用ICSharpCode.SharpZipLib进行压缩的更多相关文章

  1. C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩 C# 文件压缩加解密

    C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩   这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http:// ...

  2. 用ICSharpCode.SharpZipLib进行压缩

    今天过中秋节,当地时间(2013-09-08),公司也放假了,正好也闲着没事,就在网上学习学习,找找资料什么的.最近项目上可能会用到压缩的功能,所以自己就先在网上学习了,发现一个不错的用于压缩的DLL ...

  3. C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件

    我们 开发时经常会遇到需要压缩文件的需求,利用C#的开源组件ICSharpCode.SharpZipLib, 就可以很容易的实现压缩和解压缩功能. 压缩文件: /// <summary> ...

  4. C# 利用ICSharpCode.SharpZipLib实现在线加密压缩和解密解压缩

    这里我们选用ICSharpCode.SharpZipLib这个类库来实现我们的需求. 下载地址:http://icsharpcode.github.io/SharpZipLib/ 1.单个或多个文件加 ...

  5. 利用ICSharpCode.SharpZipLib.Zip进行文件压缩

    官网http://www.icsharpcode.net/ 支持文件和字符压缩. 创建全新的压缩包 第一步,创建压缩包 using ICSharpCode.SharpZipLib.Zip; ZipOu ...

  6. C# 下利用ICSharpCode.SharpZipLib.dll实现文件/目录压缩、解压缩

    ICSharpCode.SharpZipLib.dll下载地址 1.压缩某个指定文件夹下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志. #region 压缩 ...

  7. C#使用ICSharpCode.SharpZipLib.dll压缩多个文件

    首先通过NuGet管理安装ICSharpCode.SharpZipLib.dll 以下是压缩的通用方法: using System; using System.IO; using System.Web ...

  8. ICSharpCode.SharpZipLib实现压缩解压缩

    最近,在项目中经常需要处理压缩和解压缩文件的操作.经过查找,发现了ICSharpCode.SharpZipLib.dll ,这是一个完全由c#编写的Zip, GZip.Tar . BZip2 类库,可 ...

  9. ICSharpCode.SharpZipLib 开源压缩库使用示例

    官方网站:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx 插件描述: ICSharpCode.SharpZipLib.dl ...

随机推荐

  1. BZOJ 3991: [SDOI2015]寻宝游戏 [虚树 树链的并 set]

    传送门 题意: $n$个点的树,$m$次变动使得某个点有宝物或没宝物,询问每次变动后集齐所有宝物并返回原点的最小距离 转化成有根树,求树链的并... 两两树链求并就可以,但我们按照$dfs$序来两两求 ...

  2. SDN第5次上机作业

    SDN第5次上机作业 实验目的 1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 3.抓包分析验证负载均衡 实验步骤 1.建立以下拓扑,并连接上ODL控制器. 提交要求:ODL拓扑界面 ...

  3. DataGrid 拖动 附加属性类

    项目需要实现一个DataGrid拖动排序,于是参考网上一些资源然后,修改了下实现了一个附加属性类,如下 使用方法 <DataGrid x:Name="shareGrid" t ...

  4. C/C++语言简介之语法结构

    一.顺序结构    顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行.    例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换 ...

  5. 利用fiddler和mock调试本地微信网页

    利用fiddler和mock调试本地微信网页 微信公众号网页是比较特殊的页面,普通页面直接打开即可访问,但对于需要请求微信相关接口的部分需要安全域名认证.这导致了使用mock数据进行开发的页面没办法走 ...

  6. gerrit+nginx+centos安装配置

    安装环境 centos 6.8 gerrit-full-2.5.2.war 下载地址:https://gerrit-releases.storage.googleapis.com/gerrit-ful ...

  7. 初识Vue——计算属性和观察者

    一.计算属性 在模板内使用 1.基础例子 <template> <div class="main"> <div id="reverse_st ...

  8. 一、Python介绍

    Python 是一门什么样的语言? python是一门动态解释性的强类型定义语言. 编程语言主要从以下几个角度为进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言,每个分类代 ...

  9. FreeImage库如何转换图片格式?

    FreeImage下载地址:http://freeimage.sourceforge.net/ //freeimagemain.h #ifndef FREEIMAGEMAIN_H #define FR ...

  10. React——diff算法

    react的diff算法基于两个假设: 1.不同类型的元素会产生不同的树 2.通过设置key,开发者能够提示那些子组件是稳定的 diff算法 当比较两个树时,react首先会比较两个根节点,接下来具体 ...