ICSharpCode.SharpZipLib提供了两个压缩算法的实现,分别是BZIP2(压缩时间长,压缩率高)和GZIP(压缩效率高,压缩率低)。
先定义一个枚举,用于程序标示是哪个压缩算法。
1
2
3
4
5
6
7
8
9
10
11
|
/// <summary>
/// 压缩枚举
/// </summary>
public
enum
ZipEnum
{
//压缩时间长,压缩率高
BZIP2,
//压缩效率高,压缩率低
GZIP
}
|
单个文件的压缩:
1
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
|
#region 制作压缩包(单个文件压缩)
/// <summary>
/// 制作压缩包(单个文件压缩)
/// </summary>
/// <param name="sourceFileName">原文件</param>
/// <param name="zipFileName">压缩文件</param>
/// <param name="zipEnum">压缩算法枚举</param>
/// <returns>压缩成功标志</returns>
public
static
bool
ZipFile(
string
srcFileName,
string
zipFileName, ZipEnum zipEnum)
{
bool
flag =
true
;
try
{
switch
(zipEnum)
{
case
ZipEnum.BZIP2:
FileStream inStream = File.OpenRead(srcFileName);
FileStream outStream = File.Open(zipFileName, FileMode.Create);
//参数true表示压缩完成后,inStream和outStream连接都释放
BZip2.Compress(inStream, outStream,
true
, 4096);
inStream.Close();
outStream.Close();
break
;
|