是否有库方法可以查看是否存在识别 PATH 环境变量中路径的文件



我有下面的代码。它工作正常,但我想知道是否有一种不那么冗长的方法。是否有一种库方法来查看是否存在识别 PATH 环境变量中路径的文件,以便我可以执行类似if (FileExistsInAnyPath("robocopy.exe")的操作,而无需从PATH中提取所有路径

string foundIt = "";
string[] paths = (Environment.GetEnvironmentVariable("Path")).Split(';');
foreach (string path in paths)
{
if (File.Exists((path + "\robocopy.exe")))
{
foundIt = (path + "\robocopy.exe");
break;
}
}
if (!string.IsNullOrEmpty(foundIt))
{
// do something with fq path name
Console.WriteLine("found it here: " + foundIt);
}

我认为Linq会通过以下方式帮助你(使用System.Linq(

var paths = (Environment.GetEnvironmentVariable("Path")).Split(';');
var fileName = "robocopy.exe";
var foundit = Path.Combine(paths.SingleOrDefault(f=>File.Exists(Path.Combine(f,fileName))),fileName);

此外,您可以将该代码包装在您自己的方法 FileExistsInAnyPath(字符串文件名(

但在这里你需要处理预期的异常

  1. 单或默认,当存在多个路径时。(如果你只需要第一个,你可以用FirstOrDefault替换它(。
  2. 路径。当 LINQ 表达式返回 null 时合并。(您可以先使用 if(路径.Any(f=>File.Exists(Path.Combine(f,fileName((( 在分配给 foundit 变量之前。

最新更新