注意:我在这里只对“纯 JRE”解决方案感兴趣:即涉及 JRE 附带的类型的解决方案(并且很可能存在于java.io
包中)。我确信Apache Commons 等提供了可以通过单个方法调用很好地做到这一点的实用程序类,但我在这里需要纯 JRE。
我有以下运行时目录结构:
MyProject/
fizz.txt
src/
com/
myorg/
Driver
我Driver
是一个入口点(包含一个静态main
方法),我实际上将从命令行调用它,与我的项目的其他构建/部署等分开:
java com.myorg.Driver -url blah.example.com
等等
在里面Driver
,我需要阅读fizz.txt
并用它做一些事情。注意:无论如何,fizz.txt
将始终位于上面的 3 个父目录。Driver
在里面Driver
我有以下代码:
File fizz = new File("../../../fizz.txt");
System.out.println("fizz = " + fizz.getAbsolutePath());
当我运行时Driver
,我得到以下异常:
Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: ../../../fizz.txt not found.
at com.myorg.Driver(Driver.java:76)
at com.myorg.Driver.main(Driver.java:45)
fizz = /home/myuser/relay/workbench/eclipse-juno/workspace/MyProject/../../../
似乎 Java 不尊重“ ..
”作为关系“父级”的概念。所以我问:我如何使用 File API(再次,纯 JREfizz.txt
)来访问Driver
?提前致谢!