zoukankan      html  css  js  c++  java
  • winform rar压缩包解压缩

    /// <summary>
            /// 解压缩
            /// </summary>
            /// <param name="path">文件解压后的存放路径(绝对)</param>
            /// <param name="rarPath">将要解压缩的 .rar 文件的存放目录路径(绝对路径)这个可以是相对路径</param>
            /// <param name="rarName">将要解压缩的 .rar 文件名(包括后缀)不需要路径,前面个参数已含此路径</param>
          public void UnRAR(string path, string rarPath, string rarName)
            {

                System.Environment.CurrentDirectory = Application.StartupPath; //当前的路径是启动路径
                bool flag = false;
                string rarexe;
                RegistryKey regkey;
                Object regvalue;
                string cmd;
                ProcessStartInfo startinfo;
                Process process;
                try
                {
                    regkey = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");
                    regvalue = regkey.GetValue("");
                    rarexe = regvalue.ToString();
                    regkey.Close();
                    rarexe = rarexe.Substring(1, rarexe.Length - 7);
                    System.IO.Directory.CreateDirectory(path);
                    //Thread.Sleep(1000);
                    //解压缩命令,相当于在要压缩文件(rarName)上点右键->WinRAR->解压到当前文件夹
                    cmd = string.Format("x {0} {1} -y", rarName, path);
                    startinfo = new ProcessStartInfo();
                    startinfo.FileName = rarexe;
                    startinfo.Arguments = cmd;
                    startinfo.WindowStyle = ProcessWindowStyle.Hidden;
                    System.Environment.CurrentDirectory = Application.StartupPath; //当前的路径是启动路径
                    startinfo.WorkingDirectory = rarPath;
                    //Thread.Sleep(1000);
                    process = new Process();
                    // Thread.Sleep(1000);
                    process.StartInfo = startinfo;
                    //  Thread.Sleep(1000);
                    process.Start();
                    // Thread.Sleep(1000);
                    process.WaitForExit();
                    if (process.HasExited)
                    {
                        //flag = true;
                        File.Delete(rarPath + rarName); // 解压成功删除元文件 
                    }
                    else
                    {
                        countnu++;
                    }
                    process.Close();
                    listFiles(path);

                }
                catch (Exception e)
                {
                    //MessageBox.Show("解压缩出现错误");
                    countnu++;
                }
            }

      在解压缩过程中,如果按照上面异步下载的方法下载下来的.rar压缩包。有些文件时解压不了的,所以根据解压缩以及上一篇提到的下载,在上一篇下载中的第一种方法和本篇的解压缩才是一种完美的结合

    如果您认为这篇文章还不错或者有所收获,您可以点击文章下面的【推荐】按钮精神支持,因为这种支持是我继续写作,分享的最大动力!
    声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
  • 相关阅读:
    spring mvc velocity多视图
    ubuntu 的远程桌面
    nhibernate 3.3 linq扩展
    MongoDB资料汇总专题[转发]
    SQLServer 2008 删除、压缩日志
    VS2012和2010 设置framework版本
    引用的程序集 没有强名称
    Xamarin for OSX – SetUp
    Xamarin devexpress datagrid 样式
    Xamarin devexpress Grid
  • 原文地址:https://www.cnblogs.com/gskstudy/p/3995352.html
Copyright © 2011-2022 走看看