簡體   English   中英

Ionic.Zip ArgumentException(已添加具有相同鍵的項目)

[英]Ionic.Zip ArgumentException (An item with the same key has already been added)

我正在使用Ionic Zip壓縮特定文件夾中的所有文件夾,不包括備份文件夾(創建備份)。

這是我的代碼:

ZipFile zip = new ZipFile();
string mainpath = HttpContext.Current.Server.MapPath("~/");
Directory.GetDirectories(mainpath).Where(d=> !d.ToLower().EndsWith("backup")).ToList()
.ForEach(d=> zip.AddDirectory(d));

但添加一些目錄后,我收到以下錯誤:

已添加具有相同鍵的項目。

這怎么可能? 如何在同一父文件夾中的文件夾列表中重復名稱?

當我檢查異常時,似乎它添加了要在字典中存檔的所有文件的列表。

我不知道它用作可能導致此錯誤的密鑰(可能使用文件名作為密鑰並且在兩個不同的文件夾中具有相同的名稱可能導致它)。

解決方案 :但是我發現AddDirectoryAddFiles有另一個重載接受歸檔中的目錄路徑。 為每個目錄提供存檔中的唯一路徑解決了問題。 在我的情況下我用過:

    string mainpath = HttpContext.Current.Server.MapPath("~/");
    Directory.GetDirectories(mainpath).Where(d=> !d.ToLower().EndsWith("backup")).ToList()
.ForEach(d=> zip.AddDirectory(d, d.Substring(mainpath.Length)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM