程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> C#壓縮或解壓(rar和zip文件),

C#壓縮或解壓(rar和zip文件),

編輯:關於.NET

C#壓縮或解壓(rar和zip文件),


      /// <summary>
        /// 解壓RAR和ZIP文件(需存在Winrar.exe(只要自己電腦上可以解壓或壓縮文件就存在Winrar.exe))
        /// </summary>
        /// <param name="UnPath">解壓後文件保存目錄</param>
        /// <param name="rarPathName">待解壓文件存放絕對路徑(包括文件名稱)</param>
        /// <param name="IsCover">所解壓的文件是否會覆蓋已存在的文件(如果不覆蓋,所解壓出的文件和已存在的相同名稱文件不會共同存在,只保留原已存在文件)</param>
        /// <param name="PassWord">解壓密碼(如果不需要密碼則為空)</param>
        /// <returns>true(解壓成功);false(解壓失敗)</returns>
        public static bool UnRarOrZip(string UnPath, string rarPathName, bool IsCover,string PassWord)
        {
            if (!Directory.Exists(UnPath))
                Directory.CreateDirectory(UnPath);
            Process Process1 = new Process();
            Process1.StartInfo.FileName = "Winrar.exe";
            Process1.StartInfo.CreateNoWindow = true;
            string cmd = "";
            if (!string.IsNullOrEmpty(PassWord) && IsCover)
                //解壓加密文件且覆蓋已存在文件( -p密碼 )
                cmd = string.Format(" x -p{0} -o+ {1} {2} -y", PassWord, rarPathName, UnPath);
            else if (!string.IsNullOrEmpty(PassWord) && !IsCover)
                //解壓加密文件且不覆蓋已存在文件( -p密碼 )
                cmd = string.Format(" x -p{0} -o- {1} {2} -y", PassWord, rarPathName, UnPath);
            else if (IsCover)
                //覆蓋命令( x -o+ 代表覆蓋已存在的文件)
                cmd = string.Format(" x -o+ {0} {1} -y" , rarPathName,UnPath);
            else
                //不覆蓋命令( x -o- 代表不覆蓋已存在的文件)
                cmd = string.Format(" x -o- {0} {1} -y", rarPathName, UnPath);
            //命令
            Process1.StartInfo.Arguments = cmd;
            Process1.Start();
            Process1.WaitForExit();//無限期等待進程 winrar.exe 退出
            //Process1.ExitCode==0指正常執行,Process1.ExitCode==1則指不正常執行
            if (Process1.ExitCode == 0)
            {
                Process1.Close();
                return true;
            }
            else
            {
                Process1.Close();
                return false;
            }

        }

        /// <summary>
        /// 壓縮文件成RAR或ZIP文件(需存在Winrar.exe(只要自己電腦上可以解壓或壓縮文件就存在Winrar.exe))
        /// </summary>
        /// <param name="filesPath">將要壓縮的文件夾或文件的絕對路徑</param>
        /// <param name="rarPathName">壓縮後的壓縮文件保存絕對路徑(包括文件名稱)</param>
        /// <param name="IsCover">所壓縮文件是否會覆蓋已有的壓縮文件(如果不覆蓋,所壓縮文件和已存在的相同名稱的壓縮文件不會共同存在,只保留原已存在壓縮文件)</param>
        /// <param name="PassWord">壓縮密碼(如果不需要密碼則為空)</param>
        /// <returns>true(壓縮成功);false(壓縮失敗)</returns>
        public static bool CondenseRarOrZip(string filesPath, string rarPathName,bool IsCover, string PassWord)
        {
            string rarPath = Path.GetDirectoryName(rarPathName);
            if (!Directory.Exists(rarPath))
                Directory.CreateDirectory(rarPath);
            Process Process1 = new Process();
            Process1.StartInfo.FileName = "Winrar.exe";
            Process1.StartInfo.CreateNoWindow = true;
            string cmd = "";
            if (!string.IsNullOrEmpty(PassWord) && IsCover)
                //壓縮加密文件且覆蓋已存在壓縮文件( -p密碼 -o+覆蓋 )
                cmd = string.Format(" a -ep1 -p{0} -o+ {1} {2} -r", PassWord, rarPathName, filesPath);
            else if (!string.IsNullOrEmpty(PassWord) && !IsCover)
                //壓縮加密文件且不覆蓋已存在壓縮文件( -p密碼 -o-不覆蓋 )
                cmd = string.Format(" a -ep1 -p{0} -o- {1} {2} -r", PassWord, rarPathName, filesPath);
            else if (string.IsNullOrEmpty(PassWord) && IsCover)
                //壓縮且覆蓋已存在壓縮文件( -o+覆蓋 )
                cmd = string.Format(" a -ep1 -o+ {0} {1} -r", rarPathName, filesPath);
            else
                //壓縮且不覆蓋已存在壓縮文件( -o-不覆蓋 )
                cmd = string.Format(" a -ep1 -o- {0} {1} -r", rarPathName, filesPath);
            //命令
            Process1.StartInfo.Arguments = cmd;
            Process1.Start();
            Process1.WaitForExit();//無限期等待進程 winrar.exe 退出
            //Process1.ExitCode==0指正常執行,Process1.ExitCode==1則指不正常執行
            if (Process1.ExitCode == 0)
            {
                Process1.Close();
                return true;
            }
            else
            {
                Process1.Close();
                return false;
            }

        }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved