首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C#检查中,文件名*可能*有效(不存在)

在C#检查中,文件名*可能*有效(不存在)
EN

Stack Overflow用户
提问于 2009-01-07 21:06:57
回答 13查看 125.7K关注 0票数 130

在System.IO名称空间中是否有一个方法可以检查文件名的有效性?

例如,C:\foo\bar将验证,而:"~-*将不验证

或者更棘手的是,X:\foo\bar会验证系统上是否有X:驱动器,但不会验证。

我想我可以自己编写这样的方法,但我更感兴趣的是内置的方法。

EN

回答 13

Stack Overflow用户

发布于 2009-01-07 21:11:39

只要做就行了;

代码语言:javascript
复制
System.IO.FileInfo fi = null;
try {
  fi = new System.IO.FileInfo(fileName);
}
catch (ArgumentException) { }
catch (System.IO.PathTooLongException) { }
catch (NotSupportedException) { }
if (ReferenceEquals(fi, null)) {
  // file name is not valid
} else {
  // file name is valid... May check for existence by calling fi.Exists.
}

创建FileInfo实例时,该文件不需要存在。

票数 94
EN

Stack Overflow用户

发布于 2009-01-07 21:11:06

您可以从Path.GetInvalidPathCharsGetInvalidFileNameChars中获取无效字符的列表,如this question中所述。

正如jberger所指出的,此方法的响应中没有包括一些其他字符。有关windows平台的更多细节,请查看MSDN上的Naming Files, Paths and Namespaces

作为Micah points out,可以使用Directory.GetLogicalDrives获取有效驱动器的列表。

票数 37
EN

Stack Overflow用户

发布于 2012-07-25 01:20:38

您可以使用System.Uri类。Uri类不仅对web URL有用,它还可以处理文件系统路径。使用Uri.TryCreate方法查找路径是否为根路径,然后使用IsLoopback属性确定Uri是否引用本地计算机。

下面是一个简单的方法,它可以确定一个字符串是否是有效的本地根文件路径。

代码语言:javascript
复制
public bool IsPathValidRootedLocal(String pathString) {
    Uri pathUri;
    Boolean isValidUri = Uri.TryCreate(pathString, UriKind.Absolute, out pathUri);
    return isValidUri && pathUri != null && pathUri.IsLoopback;
}

我相信这将会奏效。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/422090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档