-
C#教程之C#使用iCSharpcode进行文件压缩实现方法
本文所述为一个C#使用iCSharpcode压缩的使用类,经测试效果不错。分享给大家供大家参考之用。具体方法如下:
1.参数类
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
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZipCompress { public class ZipParameter { private string zip_Name = "" ; private string zip_DirectoryName = "" ; private List< string > zip_FileList = new List< string >(); /// <summary> /// 压缩后的文件名称 /// </summary> public string ZIPName { get { return zip_Name; } set { zip_Name = value; } } /// <summary> /// 压缩的文件路径 /// </summary> public string ZIPDirectoryName { get { return zip_DirectoryName; } set { zip_DirectoryName = value; } } /// <summary> /// 压缩的文件列表 /// </summary> public List< string > ZIPFileList { get { return zip_FileList; } set { zip_FileList = value; } } } } |
2.工作类
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
//**************************************************************************************** //功能:实现文件压缩 //使用方法:设置参数进行压缩 //***************************************************************************************** using System; using ICSharpCode.SharpZipLib.Zip; using System.IO; using System.Text; namespace ZipCompress { public class CompressFile { /// <summary> /// 压缩文件参数 /// </summary> public ZipParameter ZipParameter { get ; set ; } /// <summary> /// 压缩文件返回压缩后的信息 /// </summary> /// <returns>string 返回压缩后的提示信息</returns> public string CompressReturnMsg() { FileStream Zip_File; ZipOutputStream ZipStream; ZipEntry ZipEntry; string rtnMessage = "" ; //返回的信息 try { //循环文件,如果文件不存在就不添加的压缩里面 for ( int i = 0; i < ZipParameter.ZIPFileList.Count; i++) { if (!File.Exists(ZipParameter.ZIPFileList[i])) { ZipParameter.ZIPFileList.RemoveAt(i); i--; } } //没有有文件下面的压缩不执行 if (ZipParameter.ZIPFileList.Count == 0) { return " file not find" ; } //没有目录进行创建 if (!Directory.Exists(ZipParameter.ZIPDirectoryName)) { Directory.CreateDirectory(ZipParameter.ZIPDirectoryName); } // 解决文档名称乱码问题,出现乱码就是因为CodePage不对 Encoding gbk = Encoding.GetEncoding( "gbk" ); ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = gbk.CodePage; //文件路径,文档路径与文件名称 string strPath = ZipParameter.ZIPDirectoryName + ZipParameter.ZIPName; Zip_File = File.Create(strPath); ZipStream = new ZipOutputStream(Zip_File); foreach ( string FileToZip in ZipParameter.ZIPFileList) { Zip_File = File.OpenRead(FileToZip); byte [] buffer = new byte [Zip_File.Length]; Zip_File.Read(buffer, 0, buffer.Length); Zip_File.Close(); ZipEntry = new ZipEntry(Path.GetFileName(FileToZip)); ZipStream.PutNextEntry(ZipEntry); ZipStream.Write(buffer, 0, buffer.Length); } ZipStream.Finish(); ZipStream.Close(); Zip_File.Close(); rtnMessage = "success" ; } catch (Exception ex) { rtnMessage = "fail:" + ex.Message; } finally { GC.Collect(); GC.Collect(1); } return rtnMessage; } } } |
3.使用类
1
2
3
4
5
6
7
8
9
|
ZipParameter zp = new ZipParameter(); zp.ZIPDirectoryName = @"C:\Users\Public\Pictures\Sample Pictures\" ; zp.ZIPName = "Test.zip" ; zp.ZIPFileList.Add( @"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg" ); zp.ZIPFileList.Add( @"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg" ); zp.ZIPFileList.Add( @"C:\Users\Public\Pictures\Sample Pictures\错误文件.jpg" ); CompressFile cprFile = new CompressFile(); cprFile.ZipParameter = zp; string strMessage = cprFile.CompressReturnMsg(); |
4.文件源码点此本站下载
希望本文所述对大家的C#程序设计有所帮助。
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比