zoukankan      html  css  js  c++  java
  • 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 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

      

  • 相关阅读:
    VC多文档编程技巧(取消一开始时打开的空白文档)
    GetActiveView 返回 NULL 为 MDI 框架窗口
    UC何小鹏:移动互联网创业需警惕五大“不靠谱
    vc:如何从Internet上有效而稳定地下载文件
    python操作文件
    python if条件判断
    python使用退格键时出现^H解决方法
    Python中列表,元组,字典,集合的区别
    python调用shell脚本
    python调用shell命令
  • 原文地址:https://www.cnblogs.com/xwc1996/p/9250475.html
Copyright © 2011-2022 走看看