【问题标题】:Is there a way to verify a valid path / file name? [closed]有没有办法验证有效的路径/文件名? [关闭]
【发布时间】:2015-04-10 15:54:41
【问题描述】:

有没有办法验证有效的路径/文件名?文件名是已知的,因为它是给客户的。 .exe 和其他文件的放置位置未知。

【问题讨论】:

  • 你想避免什么步骤?整个方法还是只是其中的一部分?可能是重复的:stackoverflow.com/questions/6198392/…
  • “正确”是什么意思?你的意思是它可能是一个有效的文件名,即它不包含非法字符吗?还是您的意思是该文件确实存在(请记住,它可能随时更改,因此无论如何这都不是正确的方法)?
  • @ttom -- 你还没有澄清任何事情。重新阅读我的评论。
  • @ttom 如果你不知道文件的位置,你怎么知道它存在?
  • 你最好的办法是完全停止问这个问题。而是对您希望执行的文件执行操作,并在异常失败时适当处理异常。假设调用 File.Exists 时文件存在,然后在打开之前被删除;您需要处理这种情况的异常,那么为什么首先要调用“exists”呢?只需处理异常。假设文件存在但用户无权操作它;在这种情况下您需要处理异常,所以只需处理异常

标签: c# file path


【解决方案1】:

要检查指定路径是否存在文件,请使用System.IO.File.Exists(string path)

if (File.Exists(pathFileName))
{
    ...
}
else
{
    ...
}

要检查路径或文件名是否有效(即不包含非法字符),请使用 System.IO.Path.GetInvalidPathChars()System.IO.Path.GetInvalidFileNameChars()

if (Path.GetInvalidFileNameChars().Any(c => pathFileName.Contains(c)))
{
    ...
}

【讨论】:

    【解决方案2】:

    由于您尝试验证路径是否确实存在,您应该能够使用System.IO

    var path = "...";
    if(Directory.Exist(path))
    {
         // Valid / Exist
    }
    

    您也可以通过简单地使用File.Exist 来验证文件。信息可以在here找到。

    path参数允许指定相对或绝对路径 信息。相对路径信息被解释为相对于 当前工作目录。尾随空格从 路径参数结束前检查目录是否 存在。 path 参数不区分大小写。如果你没有 对目录具有最低只读权限,Exists 方法 将返回假。如果发生任何错误,Exists 方法将返回 false 在尝试确定指定文件是否存在时。这可能发生 在引发异常的情况下,例如传递文件名 无效字符或太多字符,磁盘故障或丢失, 或者调用者没有读取文件的权限。

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 2021-03-28
      • 2019-03-05
      • 2022-11-22
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      相关资源
      最近更新 更多