[英]Clear all ZipArchive entries
我在UWP c#中使用ZipArchive类时遇到问题...当使用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();
}
}
我找到了解决问题的方法,但是如果这是最有效的方法,我不知道...
do {
_archive.Entries[0].Delete();
} while (_archive.Entries.Count > 0);
也有同样的问题。 在我的情况下,用户使用FileSavePicker选择目标zip文件。 现在,我通过在临时文件夹中创建一个临时ZIP文件解决了该问题
var tempZipFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("TempZipFile.zip", CreationCollisionOption.GenerateUniqueName);
并且在将内容添加到zip文件时使用
await tempZipFile.MoveAndReplaceAsync(zipFileToCreate);
您还可以创建条目列表并将其删除
foreach(var entry = _archive.Entries.ToList()) {
entry.Delete();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.