C# ICSharpCode.SharpZipLib.dll文件压缩和解压功能类整理,上传文件或下载文件很常用

工作中我们很多时候需要进行对文件进行压缩,比较通用的压缩的dll就是ICSharpCode.SharpZipLib.dll,废话不多了,网上也有很多的资料,我将其最常用的两个函数整理了一下,提供了一个通用的类,这样在工作中可以快速的完成压缩和解压缩的动作哦

官网下载地址:  http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

1. 在项目中添加对ICSharpCode.SharpZipLib.dll的引用;

2. 在需要使用到ICSharpCode.SharpZipLib中定义的类的编码界面中将其导入(Imports)

 1 using ICSharpCode.SharpZipLib.Zip;
 2 using System;
 3 using System.IO;
 4
 5 namespace ZTO.WayBill.Utilities
 6 {
 7     /// <summary>
 8     /// 压缩类
 9     /// http://www.cnblogs.com/kissdodog/p/3525295.html
10
11     /// </summary>
12     public class ZipHelper
13     {
14         /// <summary>
15         /// 压缩文件夹
16         /// </summary>
17         /// <param name="source">源目录</param>
18         /// <param name="s">ZipOutputStream对象</param>
19         public static void Compress(string source, ZipOutputStream s)
20         {
21             string[] filenames = Directory.GetFileSystemEntries(source);
22             foreach (string file in filenames)
23             {
24                 if (Directory.Exists(file))
25                 {
26                     // 递归压缩子文件夹
27                     Compress(file, s);
28                 }
29                 else
30                 {
31                     using (FileStream fs = File.OpenRead(file))
32                     {
33                         byte[] buffer = new byte[4 * 1024];
34                         // 此处去掉盘符,如D:\123\1.txt 去掉D:
35                         ZipEntry entry = new ZipEntry(file.Replace(Path.GetPathRoot(file), ""));
36                         entry.DateTime = DateTime.Now;
37                         s.PutNextEntry(entry);
38                         int sourceBytes;
39                         do
40                         {
41                             sourceBytes = fs.Read(buffer, 0, buffer.Length);
42                             s.Write(buffer, 0, sourceBytes);
43                         } while (sourceBytes > 0);
44                     }
45                 }
46             }
47         }
48
49         /// <summary>
50         /// 解压缩
51         /// </summary>
52         /// <param name="sourceFile">压缩包完整路径地址</param>
53         /// <param name="targetPath">解压路径是哪里</param>
54         /// <returns></returns>
55         public static bool Decompress(string sourceFile, string targetPath)
56         {
57             if (!File.Exists(sourceFile))
58             {
59                 throw new FileNotFoundException(string.Format("未能找到文件 ‘{0}‘ ", sourceFile));
60             }
61             if (!Directory.Exists(targetPath))
62             {
63                 Directory.CreateDirectory(targetPath);
64             }
65             using (var s = new ZipInputStream(File.OpenRead(sourceFile)))
66             {
67                 ZipEntry theEntry;
68                 while ((theEntry = s.GetNextEntry()) != null)
69                 {
70                     if (theEntry.IsDirectory)
71                     {
72                         continue;
73                     }
74                     string directorName = Path.Combine(targetPath, Path.GetDirectoryName(theEntry.Name));
75                     string fileName = Path.Combine(directorName, Path.GetFileName(theEntry.Name));
76                     if (!Directory.Exists(directorName))
77                     {
78                         Directory.CreateDirectory(directorName);
79                     }
80                     if (!String.IsNullOrEmpty(fileName))
81                     {
82                         using (FileStream streamWriter = File.Create(fileName))
83                         {
84                             int size = 4096;
85                             byte[] data = new byte[size];
86                             while (size > 0)
87                             {
88                                 streamWriter.Write(data, 0, size);
89                                 size = s.Read(data, 0, data.Length);
90                             }
91                         }
92                     }
93                 }
94             }
95             return true;
96         }
97     }
98 }
时间: 2024-11-03 20:47:38

C# ICSharpCode.SharpZipLib.dll文件压缩和解压功能类整理,上传文件或下载文件很常用的相关文章

c#自带类实现的多文件压缩和解压

c#自带的System.IO.Compression命名空间下的压缩类实现的多文件压缩和解压功能,缺点是多文件压缩包的解压只能调用自身的解压方法,和现有的压缩软件不兼容.下面的代码没有把多文件的目录结构加进去 using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; namespace Test.Zip { class CompressHelper { /// <su

34模块-zip【文件压缩和解压、图片压缩和编辑】

Zip模块管理文件压缩和解压,通过plus.zip可获取压缩管理对象. 比较常用的就是  对图片进行压缩.转码.旋转操作了 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no&q

使用SharpZIpLib写的压缩解压操作类

使用SharpZIpLib写的压缩解压操作类,已测试. public class ZipHelper { /// <summary> /// 压缩文件 /// </summary> /// <param name="directory"></param> /// <param name="targetPath"></param> public static void Zip(string dir

.net文件压缩和解压及中文文件夹名称乱码问题

/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博客内容 在.NET可以通过多种方式实现zip的压缩和解压:1.使用System.IO.Packaging:2.使用第三方类库:3.通过 System.IO.Compression 命名空间中新增的ZipArchive.ZipFile等类实现. 一.使用System.IO.Packaging压缩和解压

【C#公共帮助类】ZipHelper 压缩和解压帮助类,经过实战总结出来的代码

关于本文档的说明 本文档基于ICSharpCode.SharpZipLib.dll的封装,常用的解压和压缩方法都已经涵盖在内,都是经过项目实战积累下来的 欢迎传播分享,必须保持原作者的信息,但禁止将该文档直接用于商业盈利. 本人自从几年前走上编程之路,一直致力于收集和总结出好用的框架和通用类库,不管是微软自己的还是第三方的只要实际项目中好用且可以解决实际问题那都会收集好,编写好文章和别人一起分享,这样自己学到了,别人也能学到知识,当今社会很需要知识的搬运工. Email:[email prote

ZipHelper 压缩和解压帮助类,经过实战总结出来的代码

ICSharpCode.SharpZipLib.dll的封装,常用的解压和压缩方法都已经涵盖在内,都是经过项目实战积累下来的 欢迎传播分享,必须保持原作者的信息,但禁止将该文档直接用于商业盈利. 本人自从几年前走上编程之路,一直致力于收集和总结出好用的框 ... bbs.chinaacc.com/forum-2-26/topic-5688150.html bbs.chinaacc.com/forum-2-26/topic-5688169.html bbs.chinaacc.com/forum-2

FTP文件操作 上传文、 下载文件、删除文件 、创建目录

/// <summary> /// FTP上传文件 /// </summary> /// <param name="fileUpload">上传控件</param> /// <param name="ftpServerIP">上传文件服务器IP</param> /// <param name="ftpUserID">服务器用户名</param> ///

python学习shutil模块的文件压缩和解压用法

shutil模块可以创建压缩包并返回文件路径,例如 zip,tar,下面详细其用法 base_name 压缩包的文件名,也可以是压缩包的路径,只是文件名时,则保存至当前目录,否则保存指定路径 data_bak 保存当前路径 format  压缩包种类  zip tar bztar gztar root_dir 要压缩的文件路径 owner 用户 group 用户组 logger 用于记录日志 1,压缩的用法 import zipfile z=zipfile.Zipfile('a.zip','w'

iOS网络-ZipArchive框架的文件压缩和解压

导入第三方框架ZipArchive之后还要在系统库文件中导入一个如下文件(搜索libz出来的任何一个都可以) 文件压缩 -(void)zip { NSArray *arrayM = @[@"/Users/gengqun/Desktop/Snip20160118_866.png", @"/Users/gengqun/Desktop/Snip20160118_867.png", @"/Users/gengqun/Desktop/Snip20160118_868