我正在使用上述方法,并获得上述异常
我没有在目录名称中看到任何非法字符(还有其他目录按预期返回结果)
当我使用Directory.GetFiles(String, String, SearchOption)
方法失败的同一目录调用静态DirectoryInfo
时,没有问题,方法会按预期返回。
知道什么可能导致这种不端行为吗?
答案 0 :(得分:1)
如msdn中所述,
时会引发ArgumentException
searchPattern包含一个或多个由。定义的无效字符 GetInvalidPathChars方法。
(searchPattern
是方法的第一个String参数。)
测试一下,你可以试试
var invalidChars = <yourSearchPattern>.Select(x => x).Intersect(Path.GetInvalidPathChars()).ToList();
如果你在invalidChars中找到了什么,你就会找到问题的根源。
修改强>
为什么它适用于Directory.GetFiles()?我必须承认我不明白。
引发ArgumentException
如果第一个参数(path
)包含无效字符(或IsNullOrWhiteSpace
),或
如果第二个参数(searchPattern
)
不包含有效模式
有效的模式是
参数不能以两个句点(“..”)结尾或包含两个句点 (“..”)后跟DirectorySeparatorChar或 AltDirectorySeparatorChar,也不能包含任何字符 InvalidPathChars。
由于InvalidPathChars
(已废弃)给我与GetInvalidPathChars()
相同的结果,至少在.net 4.5中,我必须承认我被卡住了。
你可以使用不同版本的.net,两者之间有区别吗?
答案 1 :(得分:1)
当我在mac上扫描目录时(通过网络共享),我遇到了这个问题。
DirectoryInfo.GetFiles(@ “//的MacBook / sharedfolder”)
似乎在Mac上使用像&lt;,&gt;这样的字符是非常合法的?在文件名中,但在Windows上它不是。
当目录中的某个文件名包含无效字符时,我收到此“非法字符”错误。