File.Exists(路径) 是判断文件存在的最简方式,返回 bool 值;需传入绝对路径或相对路径,推荐绝对路径;支持非法路径静默返回 false,不抛异常;配合 Path.Combine 构建跨平台安全路径。

直接用 File.Exists(路径) 就能判断文件是否存在,返回 true 或 false。 它是 .NET 中最常用、最简洁的方式,无需额外引用,属于 System.IO 命名空间。
基本用法:传入完整文件路径
必须提供**绝对路径**或**相对于当前工作目录的相对路径**。相对路径容易出错,推荐优先用绝对路径:
-
✅ 正确(推荐):
string path = @"C:\Temp\config.txt"; bool exists = File.Exists(path); -
❌ 风险(不推荐):
File.Exists("data.json")—— 若程序工作目录不是预期位置,会返回false即使文件存在
注意路径有效性与权限问题
File.Exists 只检查“路径是否指向一个存在的普通文件”,它不会抛出异常,但有几点要留心:
- 如果路径格式非法(如含
| ? *),方法直接返回false,不报错 - 若路径指向的是目录(而非文件),也返回
false - 即使有访问权限限制(如无读取权限),只要文件物理存在,仍返回
true;但若系统因权限无法确认(极少见),也可能返回false
配合 Path.Combine 构建安全路径
避免手动拼接字符串出错,尤其跨平台时路径分隔符不同:
string folder = @"C:\MyApp\Data";string fileName = "log.txt";string fullPath = Path.Combine(folder, fileName); // 自动处理 \ 或 /if (File.Exists(fullPath)) { /* 文件存在 */ }
替代方案?Directory.Exists 和 try-catch 不适合判断文件
别混淆用途:
-
Directory.Exists()判断的是**文件夹**,不是文件 - 用
try/catch打开文件再捕获FileNotFoundException是重操作,效率低且不必要 -
FileInfo.Exists可以用,但需实例化对象,比File.Exists略重,适合后续还要获取文件属性的场景
基本上就这些。记住:路径要对、别混用目录判断、优先组合路径再检查——File.Exists 本身很简单,关键在用得稳。










