C# 替换zip中同名的文件

C# 替换zip中同名的文件,c#,zip,C#,Zip,我有一个代码,可以创建文件或将文件添加到指定的zip存档中。如果我试图添加另一个同名文件,我找不到替换zip文件的选项 private void button1_Click(object sender, EventArgs e) { if (oflFilesToZip.ShowDialog() == DialogResult.OK) { string[] files = oflFilesToZip.FileNames;

我有一个代码,可以创建文件或将文件添加到指定的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中?

如果已存在具有该名称的条目,则将添加另一个条目:

中已存在具有指定名称(entryName)的项 存档时,将使用相同的名称创建第二个条目

因此,在添加它之前,必须从archieve中删除它

foreach (string file in files)
{
    ZipArchiveEntry oldEntry = zip.GetEntry(file);
    if(oldEntry != null) oldEntry.Delete();   
    zip.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal);        
}

鉴于Zip文件的性质,我希望删除旧条目并添加新条目。Replace将只是执行这两个操作的助手。