Java文件不存在,但存在File.getAbsoluteFile()
当Java文件不存在,但存在File.getAbsoluteFile(),java,java-7,Java,Java 7,当java.io.File不存在,但文件实例上调用的getAbsoluteFile()方法返回确实存在的文件时,是否有人遇到过这种情况。为什么会这样 注 我使用的是Linux plus Oracle Java运行时,版本为1.7.0\u 95-b00 我传入了一个JVM选项-Duser.dir=/path/to/wherewhen 启动tomcat实例 您可能不应该乱搞user.dir。而是在启动Tomcat之前切换到该目录 File.getAbsoluteFile()假设user.dir是您
java.io.File
不存在,但文件实例上调用的getAbsoluteFile()
方法返回确实存在的文件时,是否有人遇到过这种情况。为什么会这样
注
1.7.0\u 95-b00
-Duser.dir=/path/to/where
when
启动tomcat实例您可能不应该乱搞
user.dir
。而是在启动Tomcat之前切换到该目录
File.getAbsoluteFile()
假设user.dir
是您真正所在的目录,但您不是
根据您的观察,我认为File.exists()
直接映射到操作系统级别的stat
。而File.getAbsoluteFile()
只是新文件(System.getProperty(“user.dir”)、getPath())
假设
user.dir
是操作系统的当前工作目录,这两种实现是正确和合理的。但是在您的情况下,它们是不同的,这个(假定的)实现可以解释您所经历的情况。这是否只在调试器中发生?如果您在try
块中调用这些方法并打印结果会怎么样?它在程序和调试器监视中都会发生这是仅在tomcat中发生还是可以用一个简单的独立应用程序()复制相同的结果?目前我在tomcat进程中复制它。当我有时间的时候,我会用一个最小的例子来验证它。现在我必须赶上项目进度,这是否意味着java.io.File
中的某些内部状态可能与System
的user.dir
属性不同步?这很公平。File.exists最终依赖于公共本机int getBooleanAttributes0(文件f)的返回结果代码>这是本机调用。