SharpCompress的压缩文件解压和文件夹压缩

Posted xwc1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SharpCompress的压缩文件解压和文件夹压缩相关的知识,希望对你有一定的参考价值。

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 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();
            }
        }

4.资源

  SharpCompress.dll

  

以上是关于SharpCompress的压缩文件解压和文件夹压缩的主要内容,如果未能解决你的问题,请参考以下文章

使用通用流通过 SharpCompress 创建压缩文件

PCB 无需解压,直接读取Genesis TGZ指定文件 实现方法

什么是好压?

SharpCompress & LZMA2 7z 存档 - 特定文件的提取速度非常慢。为啥?备择方案?

好压压缩算法里LZMA算法和LZMA2有啥区别?

压缩包解压错误,文件损坏 是啥原因?