System.IO.File.Exists()来自x86和x64应用程序的不同答案

时间:2013-07-09 19:45:25

标签: c# visual-studio-2012 64-bit

我正在使用安装了Update 3的Visual Studio 2012。我正在使用C#定位.NET framework 4.5。

我有一个像这样开始的方法:

public void Open(System.String filePath)
{
    if (!System.IO.File.Exists(filePath))
        throw new FileNotFoundException(. . .);

    . . .
}

filePath参数的值为:

"C:\\Users\\Jonathan.DeCarlo\\Source\\Repos\\PoliticalClassifier\\src\\PoliticalClassifier.DataSource.Tests\\TestFiles\\Social_Economic_DataMicro.xlsx"

这条路确实存在于我的机器上。此应用程序编译为"任何CPU。"我在安装了Windows 7 x64的计算机上运行它。如果我让应用程序作为x64进程运行,即使该文件存在,也会抛出FileNotFoundException。如果我强制应用程序作为x86进程运行,则不会抛出异常(应该是这种情况)。

当应用程序作为x64进程而不是x86进程运行时,为什么System.IO.File.Exists(filePath)会返回不同的结果?

1 个答案:

答案 0 :(得分:4)

感谢您的所有评论。我尝试了其中一些,发现除了我用原始代码指向的文件之外,我无法重现任何文件的问题。在过去的几天里,我开始看到我的硬盘故障。获得一个新的硬盘驱动器,再次设置它,并运行上述程序后,我不再看到这个问题。我不能100%肯定这一点,但我会假设我试图打开的文件被一个失败的硬盘驱动器损坏了。我为野鹅追逐道歉。