我有一个代码可以创建或添加指定的zip存档文件。如果我试图添加另一个同名的文件,我找不到的是替换zip文件的选项。
private void button1_Click(object sender, EventArgs e)
{
if (oflFilesToZip.ShowDialog() == DialogResult.OK)
{
string[] files = oflFilesToZip.FileNames;
bool zipExists = File.Exists(zipPath);
ZipArchive zip;
if (zipExists)
{
zip = ZipFile.Open(zipPath, ZipArchiveMode.Update);
}
else zip = ZipFile.Open(zipPath, ZipArchiveMode.Create);
foreach (string file in files)
{
zip.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal);
}
zip.Dispose();
}
}
是否有任何方法,或者我必须手动打开zip,获取所有条目并逐一检查我添加的文件名是否已存在于zip中?
答案 0 :(得分:5)
CreateEntryFromFile
将添加另一个:
具有指定名称(entryName)的条目已存在于 存档,使用相同的名称创建第二个条目
所以在添加之前你必须从archieve Delete
。
foreach (string file in files)
{
ZipArchiveEntry oldEntry = zip.GetEntry(file);
if(oldEntry != null) oldEntry.Delete();
zip.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal);
}