2013-02-12 54 views
1

我有麻烦,我得到这个代码:覆盖项

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同一个文件,它不覆盖它,我想要它..任何想法,我怎么能做到这一点?谢谢。

回答

2

​​

必须测试,如果名称项已经存在了。如果是,请将其取出然后重新插入。

+1

感谢它的工作!但这不适用于目录?如果它是一个目录我怎么办? – user1568364 2013-02-12 15:07:08

+0

您可以使用GetDirectoryName方法:Path.GetDirectoryName(fi.FullName); (不要忘记标记为响应!)) – 2013-02-13 15:22:18

1

您可以使用UpdateFile方法。

zip.UpdateFile(fi.FullName, ""); 

此方法添加文件到一个zip压缩包,或者,如果该文件中的zip压缩包已经存在,此方法更新于zip存档,鉴于文件名的内容。 UpdateFile方法可能更准确地称为“AddOrUpdateFile”。

成功后,应用程序无法了解文件是否被添加与更新。

+0

我链接到的文档网站似乎已经不存在了,而且我似乎无法找到替代品。 – Deantwo 2017-10-16 12:59:23