7z.exe 压缩,解压缩

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;

namespace Zip
{
    public class ZipHelper
    {
        //需要下载7z工具包
        private string _7zInstallPath = AppDomain.CurrentDomain.BaseDirectory + @"\7-Zip\7z.exe";
        
        // Methods  
        public ZipHelper()
        {

        }
        // Methods  
        public ZipHelper(string str7zInstallPath)
        {
            this._7zInstallPath = str7zInstallPath;
        }

        /// <summary>  
        /// 压缩文件夹目录  
        /// </summary>  
        /// <param name="strInDirectoryPath">指定需要压缩的目录,如C:\test\,将压缩test目录下的所有文件</param>  
        /// <param name="strOutFilePath">压缩后压缩文件的存放目录</param>  
        public void CompressDirectory(string strInDirectoryPath, string strOutFilePath)
        {
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInDirectoryPath + " -r";
            //隐藏DOS窗口  
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();
        }



        /// <summary>  
        /// 压缩文件  
        /// </summary>  
        /// <param name="strInFilePath">指定需要压缩的文件,如C:\test\demo.xlsx,将压缩demo.xlsx文件</param>  
        /// <param name="strOutFilePath">压缩后压缩文件的存放目录</param>  
        public void CompressFile(string strInFilePath, string strOutFilePath)
        {
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInFilePath + "";
            //隐藏DOS窗口  
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();
        }

        /// <summary>  
        /// 解压缩,覆盖并且不提示  
        /// </summary>  
        /// <param name="strInFilePath">压缩文件的路径</param>  
        /// <param name="strOutDirectoryPath">解压缩后文件的路径</param>  
        public void DecompressFileToDestDirectory(string strInFilePath, string strOutDirectoryPath)
        {
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " x " + strInFilePath + " -aoa" + " -o" + strOutDirectoryPath + " -r ";
            //隐藏DOS窗口  
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();
        }


        /// <summary>  
        /// 压缩文件并且压缩成功后删除原文件
        /// </summary>  
        /// <param name="strInFilePath">指定需要压缩的文件,如C:\test\demo.xlsx,将压缩demo.xlsx文件</param>  
        /// <param name="strOutFilePath">压缩后压缩文件的存放目录</param>  
        public void CompressFileAndDel(string strInFilePath, string strOutFilePath)
        {
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInFilePath + "";
            //隐藏DOS窗口  
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();

            if (File.Exists(strOutFilePath))
            {
                if (File.Exists(strInFilePath))
                {
                    File.Delete(strInFilePath);
                }
            }
         }

        /// <summary>  
        /// 压缩文件并且压缩成功后删除原文件,压缩后的文件放在原文件相同目录下,并以相同名字+7z后缀命名
        /// </summary>  
        /// <param name="strInFilePath">指定需要压缩的文件,如C:\test\demo.xlsx,将压缩demo.xlsx文件</param>  
        public void CompressFileAndDel(string strInFilePath)
        {
            string strOutFilePath = Path.GetDirectoryName(strInFilePath) + "\\" + Path.GetFileNameWithoutExtension(strInFilePath) + ".7z";
            Process process = new Process();
            process.StartInfo.FileName = this._7zInstallPath;
            process.StartInfo.Arguments = " a -t7z " + strOutFilePath + " " + strInFilePath + "";
            //隐藏DOS窗口  
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            process.Start();
            process.WaitForExit();
            process.Close();

            if (File.Exists(strOutFilePath))
            {
                if (File.Exists(strInFilePath))
                {
                    File.Delete(strInFilePath);
                }
            }
        }
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值