【问题标题】:File.Exists returning True when should be False [closed]File.Exists 在应该为 False 时返回 True [关闭]
【发布时间】:2016-07-26 16:20:54
【问题描述】:

我正在开发一个需要在用户定义的目录中查找文件的程序。如果文件不存在,它必须继续使用它自己的资源。问题是,即使某些文件不存在,函数 File.Exists 也会为它们返回 true。

这是错误的图像:

这是查找文件并产生错误的代码:

string[] vmtLines = null;
if (File.Exists(vmtFile))
{
    try { vmtLines = File.ReadAllLines(vmtFile); }
    catch (Exception e) { Debug.Log(vmtFile + " Exists: " + File.Exists(vmtFile) + ", " + e.Message); }
}

【问题讨论】:

  • vmtFile 在哪里声明?
  • 如果它说它存在,那么框架没有被破坏的可能性很高。您是否刷新、重新排序、启用显示隐藏和系统文件等?
  • 对不起,我刚刚修好了,据说。谢谢告知,现在还坏吗?
  • “路径句柄无效”,所以很可能是读取失败,您有权限吗?
  • 是的,请告诉我们异常类型。如果@AlexK。是正确的,那么您将看到SecurityExceptionUnauthorizedAccessException。如果您是对的并且该文件不存在,那么您将看到FileNotFoundException。见here

标签: c# unity3d


【解决方案1】:

原来问题不在于 C#、Unity 或我的编程。似乎被称为 con. 的文件存在问题。我在 cmd 中测试,看看我是否可以用记事本打开文件 con.vmt,这是发生了什么:

然后我尝试查看同一目录中的其他文件是否发生同样的事情:

它打开得很好。然后我试图通过打开一个名为 com 的文件来查看它是否只是 3 个字母的文件名:

它没有什么奇怪的问题,然后我尝试看看它是否是扩展名为vmt和文件名con的东西:

它有同样的问题。我在父目录中尝试了同样的事情,文件名 con. 也出现了同样的问题。所以我假设这发生在任何地方。

感谢 @Programmer、@CharlesMager、@AlexK、@Quantic、@ScottChamberlain 和 @LarsTech 提供的帮助。这是一个奇怪的问题

【讨论】:

猜你喜欢
  • 2013-02-26
  • 2019-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 2023-03-26
相关资源
最近更新 更多