.NET 之类Path.IsPathRooted()
的方法很棒,但如果输入字符串无效,则抛出异常。这很好,但是在跳转到异常检查代码块之前预先检查输入字符串是否是有效路径会很好。
我看不到一个Path.IsValidPath()
或类似的,有这样的东西吗?
您可以使用File.Exists
或Directory.Exists
。
如果要检查路径是否包含非法字符(在 NET 2.0 上),可以使用Path.GetInvalidPathChars
:
char[] invalidChars = System.IO.Path.GetInvalidPathChars();
bool valid = path.IndexOfAny(invalidChars) != -1;
根据文件,
ArgumentException
[当] path 包含 GetInvalidPathChars 中定义的一个或多个无效字符时抛出。
这意味着您可以按如下方式预先验证您的路径字符串:
if (path.IndexOfAny(Path.GetInvalidPathChars()) != -1) {
// This means that Path.IsPathRooted will throw an exception
....
}
IsPathRooted
这是引发异常的唯一条件。
查看Mono 源代码Path.cs
,第 496 行,了解如何实现的详细信息。
public bool ValidPathString(string path)
{
if (string.IsNullOrEmpty(path)) return false;
char[] invalidPathChars = System.IO.Path.GetInvalidPathChars();
foreach (char c in invalidPathChars)
{
if(path.Contains(c)) return false;
}
return true;
}