2016-02-29 61 views
1

我在使用UWP中的ZipArchive類時遇到問題c ... 使用它在zip文件中寫入文件時,我注意到以下幾點: 如果選擇已生成的文件(使用savefilepicker )用新的版本來替換它,該ZipArchive添加新的文件替換該文件,而不是...清除所有ZipArchive條目

試圖解決這個問題,我試圖通過刪除所有ZipArchiveEntries:

ZipArchiveEntry.Delete(); 

但如果我在使用foreach/for/enumerator.MoveNext()循環時使用此循環 - 循環 我得到了典型的「收集修改,迭代可能無法繼續」錯誤...

我的最新版本是:

using (var enumerator = _archive.Entries.GetEnumerator()) { 
    while (enumerator.MoveNext()) { 
     var item = enumerator.Current; 
     item.Delete(); 
    } 
} 

回答

0

我找到了解決我的問題,但如果它是最有效的,我不知道...

do { 
    _archive.Entries[0].Delete(); 
} while (_archive.Entries.Count > 0); 
0

也有同樣的問題。在我的情況下,用戶使用FileSavePicker選擇一個目標zip文件。 現在我解決它在臨時文件夾下創建一個臨時ZIP文件

var tempZipFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("TempZipFile.zip", CreationCollisionOption.GenerateUniqueName); 

,當添加的內容,以zip文件使用

await tempZipFile.MoveAndReplaceAsync(zipFileToCreate); 
0

你也可以創建條目列表和刪除它們

foreach(var entry = _archive.Entries.ToList()) { 
    entry.Delete(); 
}