c#File.Exists在不存在的文件上返回true
我正在尝试检测文件的存在,我正在使用C#中的System.IO.file.Exists函数,因此,如果我执行c#File.Exists在不存在的文件上返回true,c#,C#,我正在尝试检测文件的存在,我正在使用C#中的System.IO.file.Exists函数,因此,如果我执行file.Exists(“file.txt”)返回TRUE,尽管文件不存在!! 这里发生了什么 当您仅使用文件名时,它将在执行该文件的同一本地文件中找到。您必须通过完整路径,对于示例: if (File.Exists("C:\\temp\\file.txt")) { // exists, use it } else { // does not exists } 如果该方法返回tr
file.Exists(“file.txt”)代码>返回TRUE,尽管文件不存在!!
这里发生了什么 当您仅使用文件名时,它将在执行该文件的同一本地文件中找到。您必须通过完整路径,对于示例:
if (File.Exists("C:\\temp\\file.txt"))
{
// exists, use it
}
else
{
// does not exists
}
如果该方法返回true,则该文件确实存在
但是,您可能没有看到与File.Exists
命令相同的位置
从
允许path参数指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录
由于您没有指定文件的完整路径,因此使用当前工作目录来确定文件是否存在;而且它可能确实存在。您确定已选中项目的默认文件夹吗?尝试完整路径。检查环境.CurrentDirectory
。我打赌它不是你想象的那样。你确定这个文件不存在吗?也许它是一个隐藏的文件,这就是为什么你看不到它的原因?你在你当前的工作目录中检查过file.txt是否存在吗?默认情况下,它不会得到当前路径吗?你是对的,如果我给它当前路径,它会工作不是我的情况。我知道这个文件不存在(因为我只是删除了它,让应用程序创建一个新的),但它仍然返回true。我的路径是C:\myApp\Data\myApp.mdf
我与@Ortund有同样的问题。我正在将我的db.config重命名为something.config,并且我还将其从调试目录中删除,调试目录是当前的工作目录,因为它是由这个命令控制台打印出来的;然后我用(!File.Exists(DbConfigFile))检查,它不会触发。当我使用调试器检查DbConfigFile变量时,它有“\\db.config”值。在我的例子中,我已经打印了工作目录,该目录是不存在该文件的调试目录。但是,根本不会触发检查(!File.Exists(DbConfigFile))是否存在。奇怪。@thanos.a如果没有更多详细信息,很难确定您的问题,但请注意当前工作目录与工作目录不同。在执行过程中可能会发生变化。我建议您使用Path.GetFullPath
方法尝试并确定系统在哪里查找文件。这可能有助于您确定系统正在查看的位置与您期望系统正在查看的位置。