饼子天空  
个人程序Blogs

我想把 E:\\AA\BB\11.txt 压缩后存入 E:\\AA1\BB1\11.rar

但是当我解压( E:\\AA1\BB1\11.rar)的时候,发现:11.txt 不是在

E:\\AA1\BB1\11.txt 路径下,

而是

E:\\AA1\BB1\AA\BB\11.txt

悲剧就这样进行着,

下面是我的解决方案:

 /// <summary>
    /// 压缩文件
    /// </summary>
    /// <param name="DFilePath">需要压缩的文件夹或者单个文件</param>
    /// <param name="DRARName">生成压缩文件的文件名</param>
    /// <param name="DRARPath">生成压缩文件保存路径</param>
    /// <returns></returns>
    protected bool RAR(string DFilePath, string DRARName, string DRARPath)
    {
        String the_rar;
        RegistryKey the_Reg;
        Object the_Obj;
        String the_Info;
        ProcessStartInfo the_StartInfo;
        Process the_Process;
        try
        {
            the_Reg = Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\Shell\Open\Command");
            the_Obj = the_Reg.GetValue("");
            the_rar = the_Obj.ToString();
            the_Reg.Close();
            the_rar = the_rar.Substring(1, the_rar.Length - 7);
            the_Info = " a -r " + DRARName + " " + DFilePath;
            the_Info = " a -ep " + DRARName + " " + DFilePath;//这句话的 ‘-ep’很重要,有它就能不显示压缩前的路径
              the_StartInfo = new ProcessStartInfo();
            the_StartInfo.FileName = the_rar;
            the_StartInfo.Arguments = the_Info;
            the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            the_StartInfo.WorkingDirectory = DRARPath; //RaR文件的存放目录。
              the_Process = new Process();
            the_Process.StartInfo = the_StartInfo;
            the_Process.Start();
            return true;
        }
        catch (Exception ex)
        {
            return false;
        }
    }

 

posted on 2014-02-24 17:57  饼子天空  阅读(1993)  评论(0编辑  收藏  举报