System.IO.File.Exists 和FileInfo类Exists 属性的区别?为何前者返回文件存在,后者返回不存在

麦壳饼 2011-08-17 11:40:04
我本地有一个文件是 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)
{


但是我现在很郁闷, 为什么会不一样?
...全文
242 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
麦壳饼 2011-08-17
  • 打赏
  • 举报
回复
是本地文件。 不是服务器或者远程的 共享文件。
小童 2011-08-17
  • 打赏
  • 举报
回复
以下是MSN上的解释,看看你文件夹的权限
FileInfo.Exists:如果该文件存在,则为 true;如果该文件不存在或如果该文件是目录,则为 false。

File.Exists():如果调用方具有要求的权限并且 path 包含现有文件的名称,则为 true;否则为 false。如果 path 为 空引用(在 Visual Basic 中为 Nothing)、无效路径或零长度字符串,则此方法也将返回 false。如果调用方不具有读取指定文件所需的足够权限,则不引发异常并且该方法返回 false,这与 path 是否存在无关。
麦壳饼 2011-08-17
  • 打赏
  • 举报
回复
是64位系统 win7
.net 4.0 目前最新版本, 最近有过补丁包。

也不是隐藏文件
ustbwuyi 2011-08-17
  • 打赏
  • 举报
回复
是不是存在权限的问题。
你看下这两个帖子。

llsus 2011-08-17
  • 打赏
  • 举报
回复
你那个文件什么属性的?你把代码贴上来看看啊,这两个方法除了一个是静态的,一个需要实例化之外没什么分别啊,我也试过这两个方法,返回的结果是一致的。所以我猜会不会和文件属性有关啊。
stonespace 2011-08-17
  • 打赏
  • 举报
回复
两个方法是完全一样的,可能是文件名/路径不一样,检查一下new FileInfo的时候给的文件名是否正确,
yzg100 2011-08-17
  • 打赏
  • 举报
回复
会不会你的文件是隐藏的,所以第二种方法访问不到.帮顶下.
catchdream 2011-08-17
  • 打赏
  • 举报
回复
帮顶吧,不过我一般只用过 System.IO.File.Exists,呵呵

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧