嗯,问题在标题中。
为什么 Directory.Exists("....../.../////....///.../")
返回 true?该目录不存在。
有什么替代方法吗?
我为需要目录的文本框 (WPF) 编写了 ValidationRule。代码如下:
public class DirectoryExistsValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
var fieldIsRequiredValidationResult = new ValidationResult(false, "Field is required");
if(value == null)
{
return fieldIsRequiredValidationResult;
}
else if (value.ToString().Equals(string.Empty))
{
return fieldIsRequiredValidationResult;
}
else
{
return Directory.Exists(value.ToString())
? ValidationResult.ValidResult
: new ValidationResult(false, "The path doesn't exist.");
}
}
}
当我输入类似 ValidationResult.ValidResult
"....../.../////....///.../"
当前目录是(已编辑):C:\Users\username\source\repos\projectname\projectname\bin\Debug
“Debug”文件夹中有 2 个文件夹和一些文件。在这两个文件夹中只有文件,没有更多文件夹。
<块引用>在使用接受路径字符串的方法时,请确保您的路径格式正确。如需更多信息,请参阅Path。
那个页面说
<块引用>有关 Windows 上文件路径格式的详细信息,请参阅 File path formats on Windows systems。
Trim characters 部分说
<块引用>三个或三个以上句点的段没有标准化,实际上是一个有效的文件/目录名。
所以我的字符串中多个点的四个部分每个都代表一个潜在的有效目录,但它们都不存在于我的硬盘上。尽管如此,结果还是真实。