DirectoryInfo.GetFiles方法(String,SearchOption)异常:System.ArgumentException:路径中的非法字符
我正在使用上述方法,并获得上述异常。
我在目录名称中没有看到任何非法字符(还有其他目录按预期返回结果)。
当我调用静态Directory.GetFiles(String, String, SearchOption)
与在DirectoryInfo
方法上失败的同一目录时,没有问题,并且该方法按预期返回。
任何想法可能会导致这种不正当行为?DirectoryInfo.GetFiles方法(String,SearchOption)异常:System.ArgumentException:路径中的非法字符
我在Mac上扫描目录(通过网络共享)时遇到了此问题。
DirectoryInfo。GetFiles(@“// macbook/sharedfolder”)
很明显,在mac上有相当合法的字符,如<,> ,?在一个文件名,但在Windows上它不是。
当目录中的一个文件名有无效的字符时,我得到这个“非法字符”的错误。
如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,两者之间有区别吗?
你可以发布代码吗? – shahkalpesh
这似乎是世界上最明显的事情,但*你传递的字符串是什么?* –