Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#ZipFile。如何提取或跳过名称中包含无效字符的文件?_C#_Exception_Zip_Unzip_Zipfile - Fatal编程技术网

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

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

我在.zip存档文件中有一个名为“
”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。我根本无法访问存档中的文件,这就是问题所在。