You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DirectoryInfo中最优雅地获取指定名称的FileInfo?

从DirectoryInfo获取指定名称FileInfo的最优方式

两种实现的优缺点分析

方法一:通过EnumerateFiles遍历获取

var myFileInfo = myDirectoryInfo.EnumerateFiles("filename.ext").FirstOrDefault();
  • 行为:会实际遍历目标目录,匹配到指定文件名的文件后立即返回对应的FileInfo;如果文件不存在,返回null。
  • 优势:一步完成“查找+验证存在性”,返回的结果要么是真实存在的文件信息,要么是null,后续无需额外判断文件是否存在。
  • 劣势:涉及IO操作,不过因为指定了精确文件名,EnumerateFiles会在找到第一个匹配项后停止遍历,性能开销很小。

方法二:直接构造FileInfo对象

var myFileInfo = new FileInfo(Path.Combine(myDirectoryInfo.FullName, "filename.ext"));
  • 行为:仅通过路径构造FileInfo实例,不会验证文件是否真实存在。需要通过myFileInfo.Exists属性手动判断文件状态。
  • 优势:完全不涉及IO操作,性能极高,适合仅需构造文件对象、后续自行处理存在性的场景。
  • 劣势:返回的对象可能指向不存在的文件,若直接调用其读写方法会抛出异常。

更优选择的判断标准

没有绝对的“最优雅”,需根据实际需求选择:

  • 若你需要立即确认文件存在,并直接获取有效文件信息,方法一是更合适的选择。
  • 若你只是需要构造FileInfo对象,后续会自行处理文件存在性验证,方法二更高效简洁。

补充说明

另外,你可能会想到用myDirectoryInfo.GetFiles("filename.ext").FirstOrDefault(),但EnumerateFiles是延迟加载模式,比一次性加载所有匹配文件到数组的GetFiles性能更优,尤其是在目录文件较多的场景下。

内容的提问来源于stack exchange,提问作者Achim Stuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:02:10