压缩文件与解压文件

3 篇文章 0 订阅
3 篇文章 0 订阅

 引用dll文件下载路径  提取码:85ez

只引用SevenZipSharp就可以了,剩下两个是动态引用的。

/// <summary>
        /// 压缩
        /// </summary>
        /// <param name="dllFileDir">引用dll路径</param>
        /// <param name="dirPath">要压缩到的路径</param>
        /// <param name="fileName">文件绝对路径</param>
        /// <param name="password">密码,没有可输入null</param>
        public static void CompressFile(string dllFileDir, string dirPath, string fileName, string password)
        {
            while (dirPath.Length > 0 && dirPath.Last<char>() == ' ')
            {
                string text = dirPath;
                dirPath = text.Remove(text.Length - 1, 1);
            }
            string text2 = dirPath;
            if (text2[text2.Length - 1] != Path.DirectorySeparatorChar)
            {
                dirPath += Path.DirectorySeparatorChar.ToString();
            }
            InitDll(dllFileDir);
            SevenZipCompressor sevenZipCompressor = new SevenZipCompressor();
            sevenZipCompressor.CompressionLevel = CompressionLevel.Normal;
            sevenZipCompressor.ArchiveFormat = OutArchiveFormat.SevenZip;
            sevenZipCompressor.DirectoryStructure = true;
            sevenZipCompressor.IncludeEmptyDirectories = true;
            sevenZipCompressor.PreserveDirectoryRoot = false;
            sevenZipCompressor.ZipEncryptionMethod = ZipEncryptionMethod.ZipCrypto;
            sevenZipCompressor.FastCompression = false;
            if (string.IsNullOrEmpty(password))
            {
                sevenZipCompressor.CompressDirectory(dirPath, fileName);
            }
            else
            {
                sevenZipCompressor.CompressDirectory(dirPath, fileName, password);
            }
        }

        /// <summary>
        /// 解压
        /// </summary>
        /// <param name="dllFileDir">引用dll路径</param>
        /// <param name="fileName">文件绝对路径</param>
        /// <param name="dirPath">要解压到的路径</param>
        /// <param name="password">密码,没有可输入null</param>
        /// <returns></returns>
        public static bool DecompressFile(string dllFileDir, string fileName, string dirPath, string password)
        {
            InitDll(dllFileDir);
            SevenZipExtractor sze = null;
            try
            {
                if (string.IsNullOrEmpty(password))
                    sze = new SevenZipExtractor(fileName);
                else
                    sze = new SevenZipExtractor(fileName, password);
                sze.ExtractArchive(dirPath);
            }
            catch (Exception ex)
            {
                return false;
            }
            finally
            {
                if (sze != null)
                    sze.Dispose();
            }
            return true;
        }

        /// <summary>
        /// 根据操作系统动态引用dll
        /// </summary>
        /// <param name="dllFileDir"></param>
        private static void InitDll(string dllFileDir)
        {
            try
            {
                string str = string.Empty;
                if (Environment.Is64BitProcess)
                {
                    str = "7z64.dll";
                }
                else
                {
                    str = "7z.dll";
                }
                SevenZipBase.SetLibraryPath(Path.Combine(dllFileDir, str));
            }
            catch (Exception) { }
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值