1.前言

最近做一个功能需要用到对压缩文件的解压,就找到了这个SharpCompress不错,还能解压rar的文件。但是网上的资料和我拿到的SharpCompress.dll的方法有些出入,所以我就自己摸索了一下搞出来了,代码比较简单希望可以给大家带来帮助。

2.文件夹压缩

  文件夹的压缩的话需要遍历文件夹下的所有的文件夹里的文件然后进行压缩,这里用了递归来获取文件夹下的所有的文件。具体代码如下:

        /// <summary>
/// 压缩文件夹
/// </summary>
/// <param name="targetFile">压缩文件夹路径</param>
/// <param name="zipFile">压缩后路径</param>
public void Zips(string targetFile,string zipFile)
{
using (var archive = ZipArchive.Create())
{
ZipRecursion(targetFile, archive);
FileStream fs_scratchPath = new FileStream(zipFile, FileMode.OpenOrCreate, FileAccess.Write);
archive.SaveTo(fs_scratchPath, CompressionType.Deflate);
fs_scratchPath.Close();
}
}
/// <summary>
/// 压缩递归
/// </summary>
/// <param name="fullName">压缩文件夹目录</param>
/// <param name="archive">压缩实体</param>
public void ZipRecursion(string fullName,ZipArchive archive)
{
DirectoryInfo di = new DirectoryInfo(fullName);//获取需要压缩的文件夹信息
foreach (var fi in di.GetDirectories())
{
if (Directory.Exists(fi.FullName))
{
ZipRecursion(fi.FullName, archive);
}
}
foreach (var f in di.GetFiles())
{
archive.AddEntry(f.FullName, f.OpenRead());//添加文件夹中的文件
}
}

3.压缩文件解压

  文件夹解压就更加简单了,网上其他的文章解压rar和zip的方式不一样,但是我用的时候可以用一种方法就解压rar和zip的格式,具体如下:

        /// <summary>
/// 解压文件
/// </summary>
/// <param name="targetFile">解压文件路径</param>
/// <param name="zipFile">解压文件后路径</param>
public static void Decompression(string targetFile, string zipFile)
{
var archive = ArchiveFactory.Open(targetFile);
foreach (var entry in archive.Entries)
{
if (!entry.IsDirectory)
{
entry.WriteToDirectory(zipFile, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
}
}
}

4.资源

  SharpCompress.dll

  

SharpCompress的压缩文件解压和文件夹压缩的更多相关文章

  1. Ubuntu下压缩与解压各种文件的命令

    1.压缩与解压xz文件 (1)压缩 xz -z  filename (2)解压 xz -d  filename.xz 2.压缩与解压tar文件 (1)压缩 tar -cvf  filename(压缩到 ...

  2. linux下压缩成zip文件解压zip文件

    linux  zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux  zip命令参数列表: -a     将文件转成ASCII模式 -F     尝试修复损坏 ...

  3. 在 ubuntu 下如何压缩与解压 7zip 文件。

    1.  首先利用 ubuntu 软件中心搜索并下载 7zip.或者在终端中输入:sudo apt-get install p7zip 2. 压缩 3. 解压 谢谢浏览!

  4. linux 下面压缩、解压.rar文件

    一,解压问题 在网上下东西的时候,经常会遇到.rar后缀的文件,我用tar解压,解压不出,上网找啊找,一直没找到什么合适的工具来压缩和解压.rar后缀的文件,现在我找到了. 二,rar和unrar安装 ...

  5. .xz文件解压及linux常见压缩

    最近下载mysql8.0的压缩包,发现压缩包的格式为xz tar czvf 或 tar xzvf 的压缩格式很好解压,使用tar命令即可,z是针对 gzip,j是针对 bzip2. 但xz的压缩文件就 ...

  6. linux 下面压缩,解压.rar文件以及rar,unrar实例

    http://www.rarlab.com/download.htm [root@bass src]# wget http://www.rarlab.com/rar/rarlinux-x64-5.4. ...

  7. Asp.net中文件的压缩与解压

    这里笔者为大家介绍在asp.net中使用文件的压缩与解压.在asp.net中使用压缩给大家带来的好处是显而易见的,首先是减小了服务器端文件存储的空间,其次下载时候下载的是压缩文件想必也会有效果吧,特别 ...

  8. Java—解压zip文件

    import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import ja ...

  9. P1078 字符串压缩与解压

    P1078 字符串压缩与解压 转跳点:

随机推荐

  1. 最小正子序列(序列之和最小,同时满足和值要最小)(数据结构与算法分析——C语言描述第二章习题2.12第二问)

    #include "stdio.h" #include "stdlib.h" #define random(x) (rand()%x) void creat_a ...

  2. org.springframework.beans.factory.BeanNotOfRequiredTypeException

    写一个代码:关于Spring Bean的装配.基于annotation实现的范例代码. 出现了错误: 十一月 14, 2018 4:51:01 下午 org.springframework.conte ...

  3. Windows下hosts文件的作用

    原文地址:https://my.oschina.net/u/874225/blog/194348 在操作系统中的路径:Win7在C:\Windows\System32\drivers\etc目录下 内 ...

  4. ajax异步请求的使用情景

    先上代码 var sysAllowedExts; $.ajax({ url: url+"/getExtSetting", //请求的url地址 dataType: "js ...

  5. Docker build 安装报错, Could not open requirments file: [Errno 2] No such file or directory:'requirements.txt'

    docker安装教程 https://docs.docker.com/get-started/part2/#build-the-app 相关帖子 https://stackoverflow.com/q ...

  6. PHP编译安装时常见错误及解决办法,大全

    1.   configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution ...

  7. 【转】普及一下ARM和X86的区别,鉴于ATOM已经入驻手机,AMD也会…

    这里简单来谈一下,ARM和X86之间为什么不太具有可比性的问题.要搞清楚这个问题首先要明白什么是架构,之前也有很多人提到了架构不同,但架构是什么意思?它是一个比较抽象的概念,不太容易用几句话就解释清楚 ...

  8. Java 文件切割工具类

    Story: 发送MongoDB 管理软件到公司邮箱,工作使用. 1.由于公司邮箱限制附件大小,大文件无法发送,故做此程序用于切割大文件成多个小文件,然后逐个发送. 2.收到小文件之后,再重新组合成原 ...

  9. numpy中的inf

    numpy中的inf表示一个无限大的正数 import numpy x = numpy.inf x>9999999999999999999 结果为: True

  10. UTF8与ANSI互转

    在取回的结果中,如果有Unicode字符,用printf来打印的话,则会出现乱码.通过这个方法,可以判断是否为unicode字符,是的话,通过wprintf来打印.1.判断字符串是否为Unicode的 ...