如何正确定义文件是否存在?
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
。
答案 0 :(得分:2)
首先:检查Path.Combine()
来电的结果。你可能没有得到你期望的那样。
第二:File.Exists()仅作用于本地文件系统。听起来这就是你在这里的意思,但如果你希望它在远程网络服务器上检查,那将无法工作。
第三:即使文件存在,File.Exists()也可以返回false,这有几个原因。确保您阅读了所有docs,但权限问题和格式错误的路径也会导致它返回false。
第四:文件系统易失性,这意味着首先使用File.Exists()通常不是一个好主意。只需尝试打开文件,并在失败时处理异常,您就会做得更好。
答案 1 :(得分:0)
我建议两件事 1. Path.Combine()函数有机会混合文件夹和文件名相同,假设您的文件夹名称是索引,那么您有更改获取FALSE以获取更多信息,请查看{{3} } 2.使用 AppDomain.CurrentDomain.BaseDirectory
获取当前目录