gpt4 book ai didi

c# - Dup 键在 ZipFile 对象上添加错误

转载 作者:行者123 更新时间:2023-12-04 05:52:23 25 4
gpt4 key购买 nike

我想弄清楚如何首先检查

在我遍历集合中的每个文件并尝试将其添加到 ZipFile 集合的循环中,我得到了:

using (var zip = new ZipFile())
{
foreach(...)
{
var tryFile = Directory.
GetFiles(fileLocalization, fileName,
SearchOption.TopDirectoryOnly);

if (!string.IsNullOrEmpty(file[0]))
zip.AddItem(file[0], GetPathStructure(file.NameInContainer));
}
}

ZipFile 类型来自 Ionic.Zip.dll
问题是 AddItem错误出来,我得到 已经添加了具有相同 key 的项目。因此,例如,最后它尝试添加此 zip 字典中先前已添加的此键:

"C:\www\files\233272\Exercise Files\SampleCode\Original\MyTest.cs"



我无法检查 dup 是否正常工作......它仍然试图在循环中添加两次。

在尝试添加之前如何检查任何文件[0]?我试过 LINQ .Any()但如果我什至可以为此使用 LINQ,则无法获得正确的语法。

我试过这个,但我在语法上没有这样做:
if (!string.IsNullOrEmpty(tryFile[0]) && !zip.Contains(tryFile[0])

也试过
if (!string.IsNullOrEmpty(tryFile[0]) && !zip.Any(zip[tryFile[0]])

也试过
if (!string.IsNullOrEmpty(tryFile[0]) && !zip.ContainsEntry(tryFile[0]))

最佳答案

Qu 有点旧,但既然你正在创建空的 zip 并填充它,为什么不自己跟踪文件名呢?
创建一个 List<string> , 随时将每个文件名添加到其中,然后使用 .contains 查看您要添加的文件是否已经在其中。
您的列表应该是 ZIP 文件内容的精确镜像。

快速检查我的项目后:

  zip.ContainsEntry("filename.ext")

应该做的工作。还有 List<string> IONIC ZIP 保留的似乎是
  zip.EntryFileNames

关于c# - Dup 键在 ZipFile 对象上添加错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9919107/

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