c# - 如何在c#中获取计算机中的特定文件地址?
问题描述
我想找到一个视频 (.mp4) 文件,该文件存在于我不知道的某个特定文件夹中。该文件具有隐藏、系统和目录属性。
我已经编写了代码来查找具有该扩展名的文件,但代码仍然没有找到该特定文件。
static void Main(string[] args)
{
List<string> path = new List<string>();
string fileName = "javascript_part1.mp4";
foreach(DriveInfo d in DriveInfo.GetDrives().Where(x=>x.IsReady))
{
foreach(string d1 in Directory.GetDirectories(d.Name))
{
try
{
foreach(string d2 in Directory.GetDirectories(d1))
{
try
{
path.AddRange(Directory.GetFiles(d2, fileName, SearchOption.AllDirectories));
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
foreach(string s in path)
{
Console.WriteLine(s);
}
Console.ReadLine();
}
请如果有人可以提出代码中的问题或任何修改代码以获得所需结果的建议。
解决方案
正如彼得 B 已经提到的,你看起来并不深。所以你需要有点递归,像这样:
public static string FindFile(DirectoryInfo folder, string fileName)
{
if (folder.EnumerateFiles().Where(x => x.Name == fileName).Any())
{
return folder.FullName;
}
foreach (var newFolder in folder.EnumerateDirectories())
{
return FindFile(newFolder, fileName);
}
return "Nothing found";
}
推荐阅读
- reactjs - 如何使用 CRA 创建 React 组件库?
- c++ - 地址是否有时被称为“左值”
- javascript - 在使用 express 呈现页面之前等待所有 mySql 请求完成
- powershell - 为什么这里需要“out-string -s”?
- python-3.x - 如何修复 ModuleNotFoundError:没有名为“_mysql”的模块?
- reactjs - 在开玩笑测试中使用 graphql-tools 的 addMocksToSchema 不适用于“@apollo/client”中的 gql
- javascript - Rxjs - 在等待方法执行时阻止后续请求
- c# - Quartz.net - 无法保存作业组
- node.js - Can I setup a NestJS server on raspbian
- r - R 降价文件中的库