C#ZipFile。如何提取或跳过名称中包含无效字符的文件?

时间:2016-05-09 19:00:56

标签: c# exception zip unzip zipfile

我在.zip存档中有一个名为“The Shooting Star”.jpeg的文件。 当我尝试通过ZipFile.ExtractToDirectoryZipArchiveEntry.ExtractToFile提取时,我得到System.ArgumentException: Illegal characters in path例外。

通过WinRar成功提取此类文件。

有没有办法使用ZipFile避免异常并成功提取文件或至少跳过此类文件?

更新

上传了所述档案:The Archive

1 个答案:

答案 0 :(得分:0)

您可以重新格式化源名称以从源名称中删除非法字符。

 var illegalChars = Path.GetInvalidFileNameChars();
 var destName = sourceName.Where(x => !illegalChars.Contains(x)).Aggregate("", (current, x) => current + x);

sourceName是存档中的文件名,然后您可以使用ZipArchiveEntry.ExtractToFile并为其提供已更正的目标文件名。