C#ZipFile。如何提取或跳过名称中包含无效字符的文件?
我在.zip存档文件中有一个名为“C#ZipFile。如何提取或跳过名称中包含无效字符的文件?,c#,exception,zip,unzip,zipfile,C#,Exception,Zip,Unzip,Zipfile,我在.zip存档文件中有一个名为“”The Shooting Star”.jpeg”的文件。 当我尝试通过ZipFile.ExtractToDirectory或ZipArchiveEntry.ExtractToFile提取它时,我会得到System.ArgumentException:路径中的非法字符异常 该文件通过WinRar成功提取 有没有办法使用ZipFile避免异常并成功提取文件,或者至少跳过这样的文件 更新: 上载了上述存档:您可以重新格式化源名称,以从源名称中删除非法字符 var
”The Shooting Star”.jpeg
”的文件。
当我尝试通过ZipFile.ExtractToDirectory
或ZipArchiveEntry.ExtractToFile
提取它时,我会得到System.ArgumentException:路径中的非法字符
异常
该文件通过WinRar成功提取
有没有办法使用ZipFile避免异常并成功提取文件,或者至少跳过这样的文件
更新:
上载了上述存档:您可以重新格式化源名称,以从源名称中删除非法字符
var illegalChars = Path.GetInvalidFileNameChars();
var destName = sourceName.Where(x => !illegalChars.Contains(x)).Aggregate("", (current, x) => current + x);
sourceName是归档文件中的文件名,然后可以使用ZipArchiveEntry.ExtractToFile并为其指定一个已更正的目标文件名。为什么文件名中有引号?标准Windows文件名中不能有这些符号,因此应该很清楚问题出在哪里。@DangerZone,这些符号是特殊符号,不是“引用,所以很有效。啊,我没注意到。你还有其他奇怪的角色吗?”?我无法使用相同的
ZipFile.ExtractToDirectory()
方法复制任何同名文件的问题。@DangerZone,我没有。我专门测试了这些:“字符是问题所在。Windows资源管理器无法提取名称中包含的文件。如果有必要的话,我正在使用Windows 7。我根本无法访问存档中的文件,这就是问题所在。