Java 文件不存在但 File.getAbsoluteFile() 存在
Java File does not exists but File.getAbsoluteFile() exists
有没有人遇到过 java.io.File
不存在但在文件实例 returns 上调用 getAbsoluteFile()
方法的文件确实存在的情况。为什么会这样?
备注
- 我在 Linux 加上版本为
1.7.0_95-b00
的 Oracle Java 运行时
- 我已经传递了一个 JVM 选项
-Duser.dir=/path/to/somewhere
启动 tomcat 实例
你可能不应该乱搞 user.dir
。相反,在 启动 Tomcat.
之前切换到该目录
File.getAbsoluteFile()
假设 user.dir
是您真正所在的目录,但实际上不是。
根据您的观察,我认为 File.exists()
在操作系统级别上直接映射到 stat
。而 File.getAbsoluteFile()
只是 new File(System.getProperty("user.dir"), getPath())
.
在user.dir
为操作系统当前工作目录的假设下,这两种实现方式都是正确合理的。但是在你的情况下,它们是不同的,这个(假设的)实现可以解释你正在经历的事情。
有没有人遇到过 java.io.File
不存在但在文件实例 returns 上调用 getAbsoluteFile()
方法的文件确实存在的情况。为什么会这样?
备注
- 我在 Linux 加上版本为
1.7.0_95-b00
的 Oracle Java 运行时
- 我已经传递了一个 JVM 选项
-Duser.dir=/path/to/somewhere
启动 tomcat 实例
你可能不应该乱搞 user.dir
。相反,在 启动 Tomcat.
File.getAbsoluteFile()
假设 user.dir
是您真正所在的目录,但实际上不是。
根据您的观察,我认为 File.exists()
在操作系统级别上直接映射到 stat
。而 File.getAbsoluteFile()
只是 new File(System.getProperty("user.dir"), getPath())
.
在user.dir
为操作系统当前工作目录的假设下,这两种实现方式都是正确合理的。但是在你的情况下,它们是不同的,这个(假设的)实现可以解释你正在经历的事情。