c# - 检查字符串是否为有效的 Windows 目录(文件夹)路径

标签 c# windows validation filesystems directory

我正在尝试确定用户输入的字符串对于表示文件夹路径是否有效。有效是指格式正确。

在我的应用程序中,该文件夹代表安装目标。假设文件夹路径有效的,我想判断文件夹是否存在,如果不存在则创建。

我目前正在使用 IO.Directory.Exists( String path )。我发现这工作正常,除非用户没有正确格式化字符串。发生这种情况时,此方法将返回 false,表示该文件夹不存在。但这是一个问题,因为之后我将无法创建该文件夹。

通过谷歌搜索,我发现了使用正则表达式检查格式是否正确的建议。我没有使用正则表达式的经验,想知道这是否是一种可行的方法。这是我发现的:

Regex r = new Regex( @"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$" );
return r.IsMatch( path );

正则表达式测试是否与 Directory.Exists() 结合,给我一个足够好的方法来检查路径是否有效以及它是否存在?我知道这会因操作系统和其他因素而异,但该程序仅针对 Windows 用户。

最佳答案

调用Path.GetFullPath ;如果路径无效,它将抛出异常。

要禁止相对路径(例如 Word),请调用 Path.IsPathRooted .

关于c# - 检查字符串是否为有效的 Windows 目录(文件夹)路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137097/

相关文章:

c++ - RegGetValueA格式/布局

c# - CQRS 架构中的域验证

c# - 通用属性比较 - 识别属性变化

c# - 如果 Datetime value = null 则使用今天的日期

c# - Windows 窗体 - 接受特定时间戳格式的文本框

python - 为什么我的文件路径中出现 Unicode 转义的 SyntaxError?

c# - winrt中的azure acs身份验证

python - 属性错误 : 'module' object has no attribute 'SMBus'

ruby-on-rails - validates_presence_of + :message shows the name of the field

java - JaxB 验证事件定位器 - 错误的对象引用