c# - 获取文件路径的最佳方法是什么
问题描述
我有 3 个不同的目录,其中文件可用于进一步处理。
- 可能是某个目录不存在,因此我把
try/catch
. - 只要在任何目录中有一个文件可用,我就会返回路径。
这是下面的代码,问题是什么是获取上述功能的文件路径的最佳方法?
private static string GetRealPath()
{
const string filePath1 = @"C:\temp1\";
const string filePath2 = @"C:\temp2\";
const string filePath3 = @"C:\temp\";
//looks for file in @"C:\temp1\
try
{
if (Directory.EnumerateFileSystemEntries(filePath1, "*.txt").ToList().Count > 0)
{
return filePath1;
}
}
catch (Exception e) { Console.WriteLine(e); }
//looks for file in @"C:\temp2\
try
{
if (Directory.EnumerateFileSystemEntries(filePath2, "*.txt").ToList().Count > 0)
{
return filePath2;
}
}
catch (Exception e) { Console.WriteLine(e); }
//looks for file in @"C:\temp\
try
{
if (Directory.EnumerateFileSystemEntries(filePath3, "*.txt").ToList().Count > 0)
{
return filePath3;
}
}
catch (Exception e) { Console.WriteLine(e); }
return string.Empty;
}
解决方案
您可以Directory.Exists
改用:
public static string GetFirstValidPath()
{
string[] paths = { @"C:\temp1\", @"C:\temp2\", @"C:\temp\"};
return paths.FirstOrDefault(p=> Directory.Exists(p)
&& Directory.EnumerateFileSystemEntries(p, "*.txt").Any()) ?? string.Empty;
}
推荐阅读
- javascript - 如何在 MySql 数据库中存储项目列表?
- mongodb - 如何判断我的 mongodb 实例是在 WiredTiger 还是 MMAPV1 上运行?
- java - 我正在努力为以下 SQL 编写 JPQL。实体类和 SQL QUERY 在下面。我已经尝试过这种方式的 JPQL。有人可以帮我吗
- javascript - 如何获取 DOM 元素的所有属性和方法
- c++ - 调整大小时仅允许 C++ 向量增长
- vba - 当发现包含文本的单元格添加到其他行时,VBA 使用 instr
- javascript - react js中的绑定函数
- django - Django RestFramework:令牌身份验证错误返回 HTTP 响应而不是 JSON
- django - FieldDoesNotExist:User_balances 没有名为“None”的字段 - ManyToManyField
- javascript - 是否可以在电子(macOS)中自定义页面