【转】C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)
C#打包zip文件可以调用现成的第三方dll,事半功倍,而且该dll完全免费,下载地址:SharpZipLib
下载完解压缩后,把 ICSharpCode.SharpZipLib.dll
拷贝到当前项目的目录下(如果偷懒的话,可以直接拷贝到当前项目的bin/Debug目录下),在VS打开的项目引用上右键添加引用
ICSharpCode.SharpZipLib.dll
然后,在VS打开的项目上右键新建一个类,命名为 ZipHelper.cs,把类里面的所有code清空,复制以下代码,粘贴:
复制代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- using System.Diagnostics;
- using ICSharpCode.SharpZipLib;
- using ICSharpCode.SharpZipLib.Zip;
- using ICSharpCode.SharpZipLib.Checksums;
- using ICSharpCode.SharpZipLib.Core;
- namespace ZipOneCode.ZipProvider
- {
- public class ZipHelper
- {
- /// <summary>
- /// 压缩文件
- /// </summary>
- /// <param name="sourceFilePath"></param>
- /// <param name="destinationZipFilePath"></param>
- public static void CreateZip(string sourceFilePath, string destinationZipFilePath)
- {
- if (sourceFilePath[sourceFilePath.Length - 1] != System.IO.Path.DirectorySeparatorChar)
- sourceFilePath += System.IO.Path.DirectorySeparatorChar;
- ZipOutputStream zipStream = new ZipOutputStream(File.Create(destinationZipFilePath));
- zipStream.SetLevel(6); // 压缩级别 0-9
- CreateZipFiles(sourceFilePath, zipStream, sourceFilePath);
- zipStream.Finish();
- zipStream.Close();
- }
- /// <summary>
- /// 递归压缩文件
- /// </summary>
- /// <param name="sourceFilePath">待压缩的文件或文件夹路径</param>
- /// <param name="zipStream">打包结果的zip文件路径(类似 D:/WorkSpace/a.zip),全路径包括文件名和.zip扩展名</param>
- /// <param name="staticFile"></param>
- private static void CreateZipFiles(string sourceFilePath, ZipOutputStream zipStream, string staticFile)
- {
- Crc32 crc = new Crc32();
- string[] filesArray = Directory.GetFileSystemEntries(sourceFilePath);
- foreach (string file in filesArray)
- {
- if (Directory.Exists(file)) //如果当前是文件夹,递归
- {
- CreateZipFiles(file, zipStream, staticFile);
- }
- else //如果是文件,开始压缩
- {
- FileStream fileStream = File.OpenRead(file);
- byte[] buffer = new byte[fileStream.Length];
- fileStream.Read(buffer, 0, buffer.Length);
- string tempFile = file.Substring(staticFile.LastIndexOf("//") + 1);
- ZipEntry entry = new ZipEntry(tempFile);
- entry.DateTime = DateTime.Now;
- entry.Size = fileStream.Length;
- fileStream.Close();
- crc.Reset();
- crc.Update(buffer);
- entry.Crc = crc.Value;
- zipStream.PutNextEntry(entry);
- zipStream.Write(buffer, 0, buffer.Length);
- }
- }
- }
- }
- }
原文地址:http://www.dotnetbbs.com/read.php?tid-59.html
【转】C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)相关推荐
- C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)
之前不喜欢玩博客,这次在博客园也注册了这个博客玩玩. 可是没什么内容,所以想随便添加点什么吧. 最近在微软开发的几个小工具,大多跟文件操作/IO相关,所以准备这两天整理一下,把一些也许可以和大家分享的 ...
- RAR压缩文件如何转换成ZIP格式?
压缩文件有多种不同的格式,有时候因为需求不同,我们需要把RAR压缩文件转换成ZIP格式,那要如何操作呢?下面小编分享2种简单的方法. 方法一: 如果需要转换的RAR压缩包不是很多,我们可以直接把文件名 ...
- 利用ffmpeg将avi格式文件转成mp4格式
简介:在一些场景中,需要将avi格式文件转成mp4格式.可以使用ffmepg进行处理.同理,针对某文件夹目录下所有的文件进行处理,推荐使用 os.walk(). 相关攻略: 1.win10:安装ffm ...
- 遍历文件夹(含子文件夹)方法
做法基本上有2大类: ① 经典Dir ② FSO 即 Scripting. File System Object 的[文件系统对象]脚本方法. 一开始可能Dir方法较为普遍,但随着水平的提高,应用FS ...
- python实现将子文件夹下的图片复制到新的文件夹并重命名
一.要求 在文件夹中有若干子文件夹,且子文件夹中有若干图片,按照要求将子文件夹中符合命名的图片复制到新的文件夹中,并重新命名这些图片. 即将在train文件夹中有若干命名为rgb_0001_json的 ...
- matlab bdir 排序,命令行 - 如何获取按文件夹名称排序的子文件夹及其文件列表
命令行 - 如何获取按文件夹名称排序的子文件夹及其文件列表 我可以使用dir命令行来获取子文件夹及其文件的列表,按文件夹名称排序,而不仅仅是文件名? 运用 dir / s / b / o:gn> ...
- postman导出请求url_postman接口测试之复制多个接口或collections到某个子文件夹或collections下...
一.痛点 1.postman只支持复制一个请求,或者一个子文件夹,但是不支持复制多个请求,或者整个collections到某个子文件夹或者某个collections下. 2.网上查了好一会儿,没有一个 ...
- python 包 子文件夹调用_15步,你就能拥有自己的Python程序包
每个软件开发员和数据科学家都难免要做程序包.本文推荐一篇Python开源程序包的制作指南,希望这个包含了具体操作步骤的指南能让你在构建程序包时不用花那么多耐心和时间.(适用于macOS系统的Pytho ...
- java 把文件打包成zip文件_java将文件或是文件夹打包压缩成zip格式
导读热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.BufferedInputStream; impo ...
最新文章
- 计算机计量g代表,计算机中的有些计量单位例如G、MB是表示什么意思?
- Loj #6307. 「雅礼国庆 2017 Day1」Clique
- python编程快速上手 让繁琐工作自动化 豆瓣_2019年,这些豆瓣评分9.0以上的8本程序员好书你都知道吗?...
- linux5怎么删除目录,Linux中目录的创建与删除命令使用说明
- 取代安卓梦碎!鸿蒙系统不用于手机
- ts文件合并为MP4的方法
- 扩展欧几里德算法 C# 实现
- 马斯克是全人类的?他旗下有9家公司,特斯拉被评为最没技术含量
- H5页面实现微信授权登录
- Java实现简易图形编辑系统
- 百度脑图中如果想输入换行符本身(\n)怎么输入
- 如何清除电脑桌面图标蓝底
- php输出甲子年,六十随笔 (献给自己的甲子年)
- 数学中的Sin和Cos是什么意思?(转)
- f.readline()和f.readline()和f.read()
- oracle官方网址
- 完美国际真数苹果_预告| 绿萌再创苹果、桃、梨品质分选风向标!
- 如何写自己的lib文件并测试
- Ubuntu安装中文输入法以及快捷键设置
- 高效过滤器是如何过滤的
热门文章
- 逆向映射是干嘛的anon_vma, vma, anon_vma_chain
- 常见三种字符编码的区别:ASCII、Unicode、UTF-8
- charles抓包工具使用指南
- 邻结矩阵的建立和 BFS,DFS;;
- ASP.NET 错误
- [读书笔记]TCP/IP详解V1读书笔记-1
- [Leetcode][第332题][JAVA][重新安排行程][欧拉回路 / 欧拉通路][优先队列][DFS]
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第16篇]描述DSA、Schnorr和RSA-FDH的密钥生成、签名和验证算法。
- [测试智能合约]ganache+metamask+remix
- 前端基础3-1——JavaScript