在一个文件夹A下,有个B文件夹,B中有三个XML文件,分别是1.xml,2.xml,3.xml,有如下需求:
(1)分别压缩这三个文件成:1.rar,2.rar,3.rar,每个压缩文件只包括相应的xml。
(2)在压缩的时候,能不能把1.rar压缩成里面的内容是(B/brand.xml),2.rar,3.rar也是这种形式,也就是说在压缩的时候把xml改名字了。
我用了下面的这个方法,这个方法只适合压缩文件夹,而不是文件:
http://hi.baidu.com/%D2%F8%E2_/blog/item/c1b54c10063c9df0c3ce791d.html中的利用 WinRAR 进行压缩的方法。还用了http://www.nickeyj.cn/show/61/index.aspx中的压缩文件代码,但是没有效果,不知问题出在哪里。请大家帮忙!!!

解决方案 »

  1.   

    一个帖子发了2遍啊~
    B/brand.xml
    这样的格式其实就是调用RAR的时候传个目录~
    如果你的系统安装了WinRar的话,直接在cmd里输入~
    rar a "E:\1.rar" "C:\B\1.xml"
    rar a "E:\2.rar" "C:\B\2.xml"
    rar a "E:\3.rar" "C:\B\3.xml"
    把这个过程用Process调用即可~System.Diagnostics.Start("rar","a " + "E:\1.rar " + "C:\B\1.xml")
    (好像就是这么写来着~你自己在C#里试试~)
      

  2.   

    1.xml,2.xml,3.xml 复制这些文件 然后改成你要的名字 然后压缩 完成之后 删除复制的文件
      

  3.   


    Process....
    你就不能用ZIP压缩吗
      

  4.   


    不是我刻意发两遍,是因为csdn的问题。 我刷新了一遍,我以为第一遍没有成功呢。
      

  5.   

    这个问题,我已经解决了,感谢大家的帮助。
    下面是方法:
     private void button8_Click(object sender, EventArgs e)
            {
                //xml文件列表名称(包含路径)
                string[] xmlNames = Directory.GetFiles(savePath);
                //文件名
                string fileName = string.Empty;
                //压缩的文件名
                string rarName = string.Empty;
                //压缩文件中的路径
                string name =string.Empty;            if(xmlNames.Length!=0)
                {
                    for (int i = 0; i < xmlNames.Length;i++ )
                    {
                        fileName = xmlNames[i].Substring(xmlNames[i].LastIndexOf("/")+1);
                        rarName = fileName.Substring(0, fileName.LastIndexOf("."));
                        rarName = rarName + ".rar";                    Directory.CreateDirectory(savePath+"xml/");                    name=savePath+"xml/"+"brandlogo.xml";
                        //复制文件
                        File.Copy(xmlNames[i],savePath + i + "temp.xml");
                        //更改名称
                        File.Move(savePath + i + "temp.xml", name);                    if (RAR("xml/brandlogo.xml",savePath, rarName))
                        {
                            if (File.Exists(name))
                            {
                                File.Delete(name);
                            }
                            
                        }
                      
                    }
                    if (Directory.Exists(savePath + "xml/"))
                    {
                        Directory.Delete(savePath + "xml/");
                    }
                    MessageBox.Show("压缩完毕!");
                }
            }RAR()是一个压缩的方法。