.NET2测试字符串是否为有效路径

时间:2013-02-08 15:10:14

标签: .net .net-2.0

Path.IsPathRooted()这样的.NET方法很棒,但如果输入字符串不有效则抛出。这很好,但是在跳转到异常检查代码块之前预先检查输入字符串是否是有效路径会很好。

我看不到Path.IsValidPath()或类似内容,是否有这样的内容?

3 个答案:

答案 0 :(得分:1)

根据文件,

  

ArgumentException [当]路径包含GetInvalidPathChars中定义的一个或多个无效字符时抛出。

这意味着您可以按如下方式预先验证路径字符串:

if (path.IndexOfAny(Path.GetInvalidPathChars()) != -1) {
    // This means that Path.IsPathRooted will throw an exception
    ....
}

这是IsPathRooted抛出异常的唯一条件。

请参阅Mono source of Path.cs第496行,详细了解如何实施。

答案 1 :(得分:1)

您可以使用File.ExistsDirectory.Exists

如果要检查路径是否包含非法字符(在NET 2.0上),可以使用Path.GetInvalidPathChars

char[] invalidChars = System.IO.Path.GetInvalidPathChars();
bool valid = path.IndexOfAny(invalidChars) != -1;

答案 2 :(得分:0)

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;
}