在一个文件夹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)分别压缩这三个文件成: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中的压缩文件代码,但是没有效果,不知问题出在哪里。请大家帮忙!!!
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#里试试~)
Process....
你就不能用ZIP压缩吗
不是我刻意发两遍,是因为csdn的问题。 我刷新了一遍,我以为第一遍没有成功呢。
下面是方法:
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()是一个压缩的方法。