我遇到了麻烦,我收到了这段代码:
DirectoryInfo di = new DirectoryInfo(dir);
FileInfo[] rgFiles = di.GetFiles();
DirectoryInfo[] d = di.GetDirectories();
if(rgFiles != null && d != null) {
foreach (FileInfo fi in rgFiles)
{
foreach (DirectoryInfo dii in d)
{
using (ZipFile zip = ZipFile.Read(locateZipFile()))
{
zip.AddFile(fi.FullName, "");
zip.AddDirectory(dii.FullName,dii.Name);
toolStripStatusLabel1.Text = "Inserting " + fi.Name;
toolStripStatusLabel1.Text = "Inserting " + dii.Name + " and all of it's contents";
MessageBox.Show("Inserted the file " + fi.Name);
MessageBox.Show("Inserted the folder " + dii.Name + " and all contents in it.");
zip.Save();
}
}
}
一切都很好,但是当我试图在zip中添加一个名字相同的文件时,它不会覆盖它,我想要它...有关如何做到这一点的任何想法?感谢。
答案 0 :(得分:2)
行前
zip.AddFile(fi.FullName, "");
您必须测试条目中是否已存在该名称。如果是,请将其删除,然后重新插入。
答案 1 :(得分:2)
您可以使用UpdateFile方法。
zip.UpdateFile(fi.FullName, "");
此方法将文件添加到zip存档,或者,如果该文件已存在于zip存档中,则此方法更新zip存档中该给定文件名的内容。 UpdateFile方法可能更准确地称为“AddOrUpdateFile”。
成功后,应用程序无法了解文件是添加还是更新。