C#中绝对路径引用失效问题:File.Exists返回false但路径实际存在
问题:File.Exists返回false但文件夹实际存在的原因及解决办法
嘿,这个问题其实是个很常见的新手误区——你用错方法啦!
File.Exists(path)的作用是检查某个具体的文件是否存在,但你传入的C:\\Users\\USER\\Documents是一个文件夹的路径,不是文件路径,所以它肯定会返回false,哪怕这个文件夹真实存在。
要验证文件夹路径是否有效,你应该改用Directory.Exists(path)方法,这才是专门用来判断文件夹存在性的API。
下面是修正后的完整代码:
public class Solution { private static string[] files; static void Main(string[] args) { string path = "C:\\Users\\USER\\Documents"; // 改用Directory.Exists检查文件夹是否存在 if (Directory.Exists(path)) { // 列出路径下的所有文件 files = Directory.GetFiles(path); // 检查文件数量是否大于0 if (files.Length > 0) { foreach (string r in files) { Console.WriteLine(r); } } else { Console.WriteLine("This file location is empty"); } } else { Console.WriteLine("Path does not exist"); } } }
另外补充个小提示:Directory.GetFiles()会返回目标文件夹下所有文件的路径数组,如果文件夹为空,它会返回长度为0的数组,你原来的空判断逻辑是没问题的,只要先把文件夹存在性的判断改对就可以正常运行啦。
内容的提问来源于stack exchange,提问作者TechGeek




