使用ICSharpZipLib将文件夹压缩为zip文件
序言:
在我接触Git和SVN之前,我最常用的保存数据的办法就是把文件夹压缩成一个zip文件,添加上时间戳。下面是我在学习C#的文件操作之后做的一个练习,使用开源的ICSharpZipLib来压缩文件夹并保存到指定的目录,还附带简单的日志文件。
简介:
ICSharpZipLib是一个开源的应用于.NET平台的开源类库。运用C#语言和这个类库,我们可以很轻松地创建和操作压缩文件,例如:Zip,GZip, Tar and BZip2。
源代码:
废话不多说,咱直接上源代码。说实话,使用ICSharpZipLib的博客应该也有很多,但是试了一下好多不能用。下面的这个类是我根据一个印度程序员(英文网站上的,不知道到底是啥名字,但是长得很三哥!)的博客改写的。测试过的哦,亲!
1: class CompressFolderIntoZip2: {3: /// <summary>4: /// 用来进行文件夹的压缩,输入参数源文件夹路径和目标文件夹路径即可。5: /// </summary>6: /// <param name="sourceFolderPath"></param>7: /// <param name="destFolderPath"></param>8: /// <returns></returns>9: public static bool CompressFolder(string sourceFolderPath, string destFolderPath)10: {11: try12: {13: //文件名=文件夹名+时间戳+.zip;14: string zipFileName = destFolderPath + "\\" +15: sourceFolderPath.Substring(sourceFolderPath.LastIndexOf('\\') + 1)16: + "(" + DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss") + ").zip";17: ZipFile zipFile = ZipFile.Create(zipFileName);18: zipFile.BeginUpdate();19: //压缩文件夹时默认采用源文件夹的上一级作为根目录;20: AddFolderToZip(zipFile,21: sourceFolderPath.Substring(0, sourceFolderPath.LastIndexOf('\\')),22: sourceFolderPath);23: zipFile.CommitUpdate();24: zipFile.Close();25: }26: catch (Exception exception)27: {28: Console.WriteLine(exception.ToString());29: return false;30: }31: return true;32: }33:34: /// <summary>35: /// 该方法用来实现文件夹及其中文件和子文件夹的递归压缩36: /// ZipFile zipFile=ZipFile.Create(string <zipfilename>)37: /// folderPath是需要压缩的文件夹38: /// root是压缩文件中的根目录,如果folderPath=@"C:\Test"而root=@"C:\"那么打开压缩文件会先显示一个名为Test的文件夹。如果folderPath=@"C:\Test"而root=@"C:\Test"那么压缩文件打开会直接显示Test文件夹下所有文件盒子文件夹。39: /// </summary>40: /// <param name="zipFile"></param>41: /// <param name="root"></param>42: /// <param name="folderPath"></param>43: private static void AddFolderToZip(ZipFile zipFile, string root, string folderPath)44: {45: string relativePath = folderPath.Substring(root.Length);46: if (relativePath.Length > 0)47: {48: zipFile.AddDirectory(relativePath);49: }50:51: foreach (string file in Directory.GetFiles(folderPath))52: {53: relativePath = file.Substring(root.Length);54: zipFile.Add(file, relativePath);55: }56:57: foreach (string subFolder in Directory.GetDirectories(folderPath))58: {59: AddFolderToZip(zipFile, root, subFolder);60: }61: }62: }
使用ICSharpZipLib将文件夹压缩为zip文件的更多相关文章
- Java—将文件夹压缩为zip文件
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java ...
- 基于Python——实现解压文件夹中的.zip文件
[背景]当一个文件夹里存好好多.zip文件需要解压时,手动一个个解压再给文件重命名是一件很麻烦的事情,基于此,今天介绍一种使用python实现批量解压文件夹中的压缩文件并给文件重命名的方法—— [代码 ...
- Java实现将文件或者文件夹压缩成zip
最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功能为: ( ...
- 【转】Java实现将文件或者文件夹压缩成zip
转自:https://www.cnblogs.com/zeng1994/p/7862288.html package com.guo.utils; import java.io.*; import j ...
- php将文件夹打包成zip文件
function addFileToZip($path,$zip){ $handler=opendir($path); //打开当前文件夹由$path指定. while(($filenam ...
- .net 生成html文件后压缩成zip文件并下载
这里只做一个简单的实例 public ActionResult Index() { string path = Server.MapPath("/test/");//文件输出目录 ...
- SharpCompress的压缩文件解压和文件夹压缩
1.前言 最近做一个功能需要用到对压缩文件的解压,就找到了这个SharpCompress不错,还能解压rar的文件.但是网上的资料和我拿到的SharpCompress.dll的方法有些出入,所以我就自 ...
- 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货
关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...
- SharpZipLib 文件/文件夹压缩
一.ZipFile ZipFile类用于选择文件或文件夹进行压缩生成压缩包. 常用属性: 属性 说明 Count 文件数目(注意是在ComitUpdat之后才有) Password 压缩包密码 Siz ...
随机推荐
- Apache虚拟主机(vhost)配置教程
使用apache来配置虚拟主机,在单一系统上运行多个网站. 现在很多linux主机使用apache作为web服务器的,大部分是基于这个原理来配置虚拟主机的. 下面就windows下以apache 2. ...
- IKVM - 0.42.0.3 .NET平台上的Java实现
IKVM是Microsoft .NET Framework和Mono平台上的一个Java实现,他包括以下一些部分:1. 一个用.NET实现的Java虚拟机2. Java类库的.NET实现3. 一些用于 ...
- Java 回调函数
下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: public class TestObject { /** * 一个用来被测试的 ...
- Windows下搭建Nginx实现负载均衡
环境:本次测试,使用两台电脑,分别是 192.168.0.1,192.168.0.2. 其中Nginx也部署在 192.168.0.1 电脑上,所以 PC1 的IIS端口不能使用80,因为Nginx需 ...
- BP神经网络模型及算法推导
一,什么是BP "BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最 ...
- codeforces629C Famil Door and Brackets (dp)
题意:给你一个长度为n的括号匹配串(不一定恰好匹配),让你在这个串的前面加p串和后面加上q串,使得这个括号串平衡(平衡的含义是对于任意位置的括号前缀和大于等于0,且最后的前缀和为0). 思路:枚举这个 ...
- Com 笔记 -可连接对象
首先 两个概念: 1.入接口 :源对象提供给客户调用的. 2.出接口 :源对象通过此接口可直接或间接调用客户.类似delegate 对于实现了出接口的对象称为可连接对象. 对应每一个出接口,可连接对象 ...
- hdoj 2524 矩形A + B
矩形A + B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- HDU 4452 Running Rabbits (模拟题)
题意: 有两只兔子,一只在左上角,一只在右上角,两只兔子有自己的移动速度(每小时),和初始移动方向. 现在有3种可能让他们转向:撞墙:移动过程中撞墙,掉头走未完成的路. 相碰: 两只兔子在K点整(即处 ...
- 理解C++中函数的返回
连续几年的C++程序设计课教学中,学生中总有人要求为他们单独解释函数的返回(return)究竟是什么意思.各种书中都会详讲返回值的问题,而学生们掌握的难点却是在返回至何处执行.本文试图通过对一般函数及 ...