c#File.Exists找不到文件

时间:2018-03-14 03:39:24

标签: c# .net-4.5

如何正确定义文件是否存在?

string FilePath = Path.Combine(dir, "www", "index.html");

if (!File.Exists(FilePath))
{
     // get here anyway
}

string dir
{
     get
     {
          string codeBase = Assembly.GetExecutingAssembly().CodeBase;
          UriBuilder uri = new UriBuilder(codeBase);
          string path = Uri.UnescapeDataString(uri.Path);
          return Path.GetDirectoryName(path);
     }
}
无论文件是否存在,

File.Exists都会返回false

2 个答案:

答案 0 :(得分:2)

首先:检查Path.Combine()来电的结果。你可能没有得到你期望的那样。

第二:File.Exists()仅作用于本地文件系统。听起来这就是你在这里的意思,但如果你希望它在远程网络服务器上检查,那将无法工作。

第三:即使文件存在,File.Exists()也可以返回false,这有几个原因。确保您阅读了所有docs,但权限问题和格式错误的路径也会导致它返回false。

第四:文件系统易失性,这意味着首先使用File.Exists()通常不是一个好主意。只需尝试打开文件,并在失败时处理异常,您就会做得更好。

答案 1 :(得分:0)

我建议两件事 1. Path.Combine()函数有机会混合文件夹和文件名相同,假设您的文件夹名称是索引,那么您有更改获取FALSE以获取更多信息,请查看{{3} } 2.使用 AppDomain.CurrentDomain.BaseDirectory

获取当前目录