Java文件不存在但File.getAbsoluteFile()存在

时间:2016-04-27 05:00:13

标签: java java-7

java.io.File不存在但文件实例上的调用getAbsoluteFile()方法返回确实存在的文件时,是否有人遇到过这种情况。为什么会这样呢?

enter image description here

请注意

  1. 我在Linux上加上版本为1.7.0_95-b00
  2. 的Oracle Java运行时
  3. 我什么时候传递了JVM选项-Duser.dir=/path/to/somewhere     启动tomcat实例

1 个答案:

答案 0 :(得分:2)

你可能不应该使用user.dir。而是在启动Tomcat之前更改到该目录

File.getAbsoluteFile()假设user.dir是您实际所在的目录,但您不是。

根据您的观察,我认为File.exists()直接映射到操作系统级别的stat。而File.getAbsoluteFile()只是new File(System.getProperty("user.dir"), getPath())

假设user.dir是操作系统的当前工作目录,这两个实现是正确和合理的。但在你的情况下,它们是不同的,这个(假定的)实现可以解释你正在经历的事情。