首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.IO.FileInfo在Visual 2008中工作正常,但在Visual 2012中不工作

System.IO.FileInfo在Visual 2008中工作正常,但在Visual 2012中不工作
EN

Stack Overflow用户
提问于 2014-01-13 15:36:28
回答 1查看 122关注 0票数 1

我最近已经从Visual 2008升级到Visual 2012。

我正在处理一个旧的(复杂的)代码,除了这个功能之外,升级进行得非常顺利:

代码语言:javascript
复制
FI = New System.IO.FileInfo("X:\MyFolder\MyFile.sim")

(其中"X:\“是映射的外部驱动器)

  • 在Visual 2008中: FI.Exists是True
  • 在Visual 2012中: FI.Exists是False

我对此感到很困惑。有人知道我该如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2014-01-13 16:16:43

根据MSDN,在NET20NET45之间,System.IO.FileInfo.Exists返回false的原因没有什么变化。尽管如此,在下列任何条件下,Exists都可以返回false:

  • 该文件不存在。
  • 这条路不存在。
  • 正在执行的程序集没有访问文件的权限。
    • 执行程序集的用户没有权限。
    • 程序集是在没有权限的用户范围内执行的。(如,以管理员身份运行)。

  • 路径包含无效字符。
  • 路径为空。
  • 无法到达路径(如网络驱动器已断开连接)。

有了这些信息,您应该尝试在不同的环境中运行您的代码。例如:

  • 使用或不运行VS作为管理员
  • 直接运行可执行文件(在VS之外)
  • 使用像LINQPad这样的工具来运行代码的脚本形式:var FI = new System.IO.FileInfo("X:\MyFolder\MyFile.sim");

您可以采取的另一条路径是调试它,这是针对本地机器上存在的一个已知文件运行它。例如,测试桌面上的文件是否存在于两个运行时。虽然我强烈怀疑这与网络驱动器空闲时断开连接有关。您还可以尝试绕过映射的驱动器,直接转到完整路径(例如\server\MyFolder\MyFile.sim),看看是否会引发异常或其他类型的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21095203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档