C#怎么判断文件是否存在 C# File.Exists使用方法

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

直接用 File.Exists(路径) 就能判断文件是否存在,返回 truefalse 它是 .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 本身很简单,关键在用得稳。