ZipFile.ExtractToDirectory 抛出长文件名

doo*_*man 6 .net c# io zip

我正在提取这样的 zip 文件

ZipFile.ExtractToDirectory(zipFile, extractTo);
Run Code Online (Sandbox Code Playgroud)

但我得到了

{"Could not find a part of the path 'C:\\....many subfolders\\Extremely long filename'."}
Run Code Online (Sandbox Code Playgroud)

该 zip 文件包含一个路径很长的文件,文件名总共约 280 个字符。我不确定这是否是我启用长路径的问题,如此处所示https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-在 Windows-10/ 上

如果我在资源管理器中打开路径,它会打开,但具有长文件名的文件不存在。如果我打开 zip 文件,该文件就在那里,因此提取长文件名的文件似乎存在问题。

是否可以在 zip 提取过程中跳过文件或允许提取长文件名的文件?

Ste*_*eve 2

using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
    foreach (ZipArchiveEntry entry in archive.Entries)
    {
        if (entry.FullName.Length > 280)
            continue;

        entry.ExtractToFile(Path.Combine("your path", entry.FullName));
    }
} 
Run Code Online (Sandbox Code Playgroud)

ZipFile.OpenRead将允许您检查 zip 文件的内容。然后,您可以通过该.Entries属性进行枚举,找出存档内的所有文件,并根据文件名长度决定是否继续提取。