文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>利用ICSharpCode.SharpZipLib进行压缩

利用ICSharpCode.SharpZipLib进行压缩

时间:2010-12-03  来源:Aaron.Wu

 1using System;
 2using System.Data;
 3using System.IO;
 4using ICSharpCode.SharpZipLib.Zip.Compression;
 5using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
 6using ICSharpCode.SharpZipLib.GZip;
 7
 8/**//// <summary>
 9/// Summary description for ICSharp
10/// </summary>
11public class ICSharp
12{
13    public ICSharp()
14    {
15        //
16        // TODO: Add constructor logic here
17        //
18    }
19    /**//// <summary>
20    /// 压缩
21    /// </summary>
22    /// <param name="param"></param>
23    /// <returns></returns>
24    public string Compress(string param)
25    {
26        byte[] data = System.Text.Encoding.UTF8.GetBytes(param);
27        //byte[] data = Convert.FromBase64String(param);
28        MemoryStream ms = new MemoryStream();
29        Stream stream = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(ms);
30        try
31        {
32            stream.Write(data, 0, data.Length);
33        }
34        finally 
35        {
36            stream.Close();
37            ms.Close();
38        }
39        return Convert.ToBase64String(ms.ToArray());
40    }
41    /**//// <summary>
42    /// 解压
43    /// </summary>
44    /// <param name="param"></param>
45    /// <returns></returns>
46    public string Decompress(string param)
47    {
48        string commonString="";
49        byte[] buffer=Convert.FromBase64String(param);
50        MemoryStream ms = new MemoryStream(buffer);
51        Stream sm = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(ms);
52        //这里要指明要读入的格式,要不就有乱码
53        StreamReader reader = new StreamReader(sm,System.Text.Encoding.UTF8);
54        try
55        {
56            commonString=reader.ReadToEnd();
57        }
58        finally
59        {
60            sm.Close();
61            ms.Close();
62        }
63        return commonString;
64    }
65}

Encoding.UTF8与Convert.FromBase64String
Encoding.UTF8 属性       获取 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 的偶数倍。


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载