文件存在时 File.exists() 返回 false

新手上路,请多包涵

我遇到了一个错误,我似乎找不到背后的任何逻辑。我有这个 File 对象,它是这样创建的:

 File file = new File("utilities/data/someTextFile.txt");

然后我做 file.exists() ,它返回 false (!?)。如果找不到该文件,我将 f.getAbsolutePath() 记录到一个文件中。当我查看路径时,似乎还可以。我可以将完整路径复制并粘贴到 Windows 的“运行”窗口中,文件可以正常打开。

该文件始终存在,并且在我的应用程序运行期间不会被删除或更改。它位于本地机器上。

这似乎只发生在某些情况下。我可以随时重现故障,但我确信文件对象的路径不会因我为重现故障所做的操作而改变。

什么会导致 file.exists() 返回 false?这与权限或文件锁等有关吗?

原文由 atsjoo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
1 个回答

我在 Windows 7 上看到以下情况:

 file.exists() == false
file.getAbsoluteFile().exists() == true

有问题的文件是“var\log”,绝对路径确实指的是普通子目录(不是虚拟存储)中的现有文件。这是从 IDE 中看到的。

原文由 Roman Zenka 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题