为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
喵喵时光机 2019-12-20 10:40:42
System.IO命名空间中是否存在用于检查文件名有效性的方法?例如,C:\foo\bar将验证而:"~-*不会或更棘手的是,X:\foo\bar将验证系统上是否有X:驱动器,但不会。我想我可以自己编写这样的方法,但是我对内置方法更感兴趣。
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

做就是了;


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实例的文件不需要存在。


查看完整回答
反对 回复 2019-12-20
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您可以从Path.GetInvalidPathChars和GetInvalidFileNameChars获取无效字符列表,如本问题所述。


如jberger所述,此方法的响应中未包含其他一些字符。有关Windows平台的更多详细信息,请查看MSDN 上的命名文件,路径和命名空间,


正如Micah 指出的那样,存在Directory.GetLogicalDrives来获取有效驱动器的列表。


查看完整回答
反对 回复 2019-12-20
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

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


这是一个简单的方法,可确定字符串是否为有效的,本地的且有根的文件路径。


public bool IsPathValidRootedLocal(String pathString) {

    Uri pathUri;

    Boolean isValidUri = Uri.TryCreate(pathString, UriKind.Absolute, out pathUri);

    return isValidUri && pathUri != null && pathUri.IsLoopback;

}

我相信这会奏效。


查看完整回答
反对 回复 2019-12-20
  • 3 回答
  • 0 关注
  • 639 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信