利用ICSharpCode.SharpZipLib进行压缩
时间:2010-12-03 来源:Aaron.Wu
1
using System;
2
using System.Data;
3
using System.IO;
4
using ICSharpCode.SharpZipLib.Zip.Compression;
5
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
6
using ICSharpCode.SharpZipLib.GZip;
7
8
/**//// <summary>
9
/// Summary description for ICSharp
10
/// </summary>
11
public 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 位无符号整数数组。
它的参数也又一定的要求:

2

3

4

5

6

7

8

9

10

11

12


13

14


15

16

17

18

19

20

21

22

23

24

25


26

27

28

29

30

31


32

33

34

35


36

37

38

39

40

41

42

43

44

45

46

47


48

49

50

51

52

53

54

55


56

57

58

59


60

61

62

63

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 的偶数倍。
相关阅读 更多 +