C# ICSharpCode.SharpZipLib

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-10-14 12:48:49

C# ICSharpCode.SharpZipLib的相关文章

C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩

ICSharpCode.SharpZipLib.dll下载地址 1.压缩某个指定目录下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志. #region 压缩logs目录下日志 public static void CompresslogDic() { try { string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "logs"; DirectoryInfo logsDic =

ICSharpCode.SharpZipLib 开源压缩库使用示例

官方网站:http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx 插件描述: ICSharpCode.SharpZipLib.dll 是一个完全由c#编写的Zip, GZip, Tar and BZip2 library,可以方便地支持这几种格式的压缩解压缩, SharpZipLib 的许可是经过修改的GPL,底线是允许用在不开源商业软件中,意思就是免费使用. 一.在ThinksKing的Plugins里面找到已经解压好的Sh

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

工作中我们很多时候需要进行对文件进行压缩,比较通用的压缩的dll就是ICSharpCode.SharpZipLib.dll,废话不多了,网上也有很多的资料,我将其最常用的两个函数整理了一下,提供了一个通用的类,这样在工作中可以快速的完成压缩和解压缩的动作哦 官网下载地址:  http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx 1. 在项目中添加对ICSharpCode.SharpZipLib.dll的引用: 2. 在需要

基于ICSharpCode.SharpZipLib.Zip的压缩解压缩

今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用. 一.压缩: /// <summary> /// 压缩 /// </summary> /// <param name="sourceDirectory"></param> /// <param name="targetZipName"></param> /// <param name=&qu

使用ICSharpCode.SharpZipLib+Aspose模板批量导出Word

由于是Web端的项目,所以点击按钮之后直接从Aspose模板读取数据,然后在内存中操作,而不是下载到本地后再打包弄到内存中下载.废话不多说,直接上代码 1 public ActionResult ExportZip(int testid) 2 { 3 string strSavePath = Server.MapPath("~/WordTemplate/PersonalityTest.zip"); 4 //获取数据,用户可以根据自己的需求重新定义 5 var Tester = test

ICSharpCode.SharpZipLib.dll 移植WP

由于众所周知的原因. ICSharpCode.SharpZipLib.dll在Unity移植WP的时候出现诸多API不兼容,解决方案是在在Github上面找ICSharpCode.SharpZipLib.dll的可移植库,SharpZipLib.Portable-master

C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)

我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib.dll 支持库 第二步:创建一个压缩和解压的demo项目 第三步:查看压缩和解压的文件的结果 二.demo演示(包括源码和界面) 1.下载文件压缩和解压的支持库dll ,下载地址:http://pan.baidu.com/s/1pLausnL 2.创建window创建项目 1) 添加引用(文件压缩

C#调用 ICSharpCode.SharpZipLib.Zip 实现解压缩功能公用类

最近想用个解压缩功能 从网上找了找 加自己修改,个人感觉还是比较好用的,直接上代码如下 using System; using System.Linq; using System.IO; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Checksums; using System.Diagnostics; using Microsoft.Win32; namespace ZipCommon { public cl

ICSharpCode.SharpZipLib

ICSharpCode.SharpZipLib 压缩.解压文件 附源码 http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, BZip2 和Tar格式 我们需要dll 在官网上也有,也可以从百度网盘下载 好了,深入的大家还要多多研究,今天我们简单介绍一下 简单的 单文件.文件夹的压缩和解压 先给大家看一下效果: 一.引入ICSharpCode.Sha