我本地有一个文件是 msi文件, 文件确实是存在。 路径 在 运行  中可以打开 !
但是 FileInfo 的 Exists属性返回该文件不存在。 但是System.IO.File.Exists 返回存在!
我看了 他们反编译后的大概的代码, 
他们各自似乎都是通过这个函数来获得
WIN32_FILE_ATTRIBUTE_DATA 
然后从他的 属性中获得的。 
internal static int FillAttributeInfo(string path, ref Win32Native.WIN32_FILE_ATTRIBUTE_DATA data, bool tryagain, bool returnErrorOnNotFound)
{
但是我现在很郁闷, 为什么会不一样?

解决方案 »

  1.   

    两个方法是完全一样的,可能是文件名/路径不一样,检查一下new FileInfo的时候给的文件名是否正确,
      

  2.   

    是64位系统  win7 
    .net 4.0 目前最新版本, 最近有过补丁包。 也不是隐藏文件
      

  3.   

    以下是MSN上的解释,看看你文件夹的权限
    FileInfo.Exists:如果该文件存在,则为 true;如果该文件不存在或如果该文件是目录,则为 false。File.Exists():如果调用方具有要求的权限并且 path 包含现有文件的名称,则为 true;否则为 false。如果 path 为 空引用(在 Visual Basic 中为 Nothing)、无效路径或零长度字符串,则此方法也将返回 false。如果调用方不具有读取指定文件所需的足够权限,则不引发异常并且该方法返回 false,这与 path 是否存在无关。