gpt4 book ai didi

c# - 替换 zip 中的同名文件

转载 作者:太空狗 更新时间:2023-10-30 01:01:04 24 4
gpt4 key购买 nike

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

最佳答案

CreateEntryFromFile如果已经有同名的条目,将添加另一个:

an entry with the specified name (entryName) already exists in the archive, a second entry is created with an identical name

所以你必须Delete在添加之前从存档中获取它。

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

关于c# - 替换 zip 中的同名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41958084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com