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. 带你了解强大的Cadence家族,你可能只用到了它1/10的工具

    [转载自 SI-list[中国]http://mp.weixin.qq.com/s/qsdfzQwIVjvwHXuCdvrPXA ] 本篇对2017年初版Cadence的全套所有EDA工具的技术特性特 ...

  2. JavaScript 关闭浏览器窗口

    <input type="button" name="m" value="关闭窗口" onclick="window.clo ...

  3. BZOJ 3090: Coci2009 [podjela]

    3090: Coci2009 [podjela] Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 23  Solved: 17[Submit][Statu ...

  4. IOS SQLite函数总结

    SQL语句的种类 ●  数据定义语句(DDL:Data Definition Language) ●  包括create和drop等操作 ●  在数据库中创建新表或删除表(create table或 ...

  5. centos 7 iptables基本配置

    安装iptable iptable-service #先检查是否安装了iptables service iptables status #安装iptables yum install -y iptab ...

  6. UIView设置阴影无效的原因之一

    本想在底部的按钮设置个阴影, 代码如下: self.layer.shadowColor = [UIColor blackColor].CGColor; self.layer.shadowOffset ...

  7. 正则表达式 /i /g /m /ig /gi

    正则表达式中/i,/g,/ig,/gi,/m的区别和含义   /i (忽略大小写) /g (全文查找出现的所有匹配字符) /m (多行查找) / /ig(全文查找.忽略大小写) 

  8. jQuery 遍历函数包括了用于筛选、查找和串联元素的方法。

    jQuery 参考手册 - 遍历 函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集合中. .children() 获得匹配元素集合中每个 ...

  9. leetcode_No.1 Two Sum

    原题: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...

  10. android ndk中使用gprof

    1.下载gprof支持库 下载地址: http://code.google.com/p/android-ndk-profiler/ 2.代码上的修改添加 在初始化时: monstartup(" ...