我在UWP c#中使用ZipArchive类时遇到问题... 使用它来编写zip文件中的文件时,我注意到以下内容: 如果您选择已生成的文件(使用savefilepicker)将其替换为新版本,则ZipArchive会添加新文件而不是替换文件...
尝试解决此问题,我尝试使用以下方法删除所有ZipArchiveEntries:
ZipArchiveEntry.Delete();
但是如果我在使用foreach / for / enumerator.MoveNext()循环迭代时使用它 我得到典型的“集合修改,迭代可能不会继续”错误...
我的最新版本是:
using (var enumerator = _archive.Entries.GetEnumerator()) {
while (enumerator.MoveNext()) {
var item = enumerator.Current;
item.Delete();
}
}
答案 0 :(得分:0)
我找到了解决问题的方法,但如果效率最高,我不知道......
do {
_archive.Entries[0].Delete();
} while (_archive.Entries.Count > 0);
答案 1 :(得分:0)
也有同样的问题。在我的情况下,用户使用FileSavePicker选择目标zip文件。 现在我通过在temp-folder
中创建一个临时ZIP文件来解决它var tempZipFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("TempZipFile.zip", CreationCollisionOption.GenerateUniqueName);
将内容添加到zip文件时使用
await tempZipFile.MoveAndReplaceAsync(zipFileToCreate);
答案 2 :(得分:0)
您还可以创建条目列表并将其删除
foreach(var entry = _archive.Entries.ToList()) {
entry.Delete();
}