0

到目前为止,我一直在成功使用 DotNetZip,但现在我遇到了麻烦。我想知道我是否只是遗漏了一些东西,这是预期的行为,或者这实际上是一个错误。

我使用以下简单代码来遍历 Zip 中的所有文件:

using (ZipFile zip = ZipFile.Read(filepath))
{
    foreach (ZipEntry content in zip)
    {
        // do stuff
    }
}

这似乎工作正常,它遍历 zip 中的所有文件和文件夹。但是现在我遇到了一个 Zip ,其中这个迭代跳过了 zip 中的文件夹。如果我检查 ZipFile 的条目属性,它确实不包含文件夹。因此,导致问题的不是迭代,ZipFile 本身似乎被读错了。如果我用 FileZip.CheckZip(...) 检查它,一切似乎都很好, FileZip.FixZipDirectory(...) 也无济于事。如果用 7zip 等打开,Zip 似乎没问题。

编辑:好的,拉链似乎有某种问题。我解压缩并重新压缩,现在条目列表包含所有文件夹。不幸的是,我无法影响使用该算法扫描哪些拉链。如果有人能指出一种可能的方法来检测或处理这种有缺陷的拉链,那就太好了。目前我能想到的唯一方法是从文件条目名称(包含文件夹名称作为前缀)中获取所有文件夹名称。

4

0 回答 0