2013-02-12 55 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