Note:我只对这里的“纯JRE”解决方案感兴趣:也就是说,涉及到JRE附带的类型的解决方案(很可能还位于java.io包中)。我确信, Apache等提供了一些实用工具类,它们可以很好地从单个方法调用中实现这一点,但是这里需要纯。
我有以下运行时目录结构:
MyProject/
fizz.txt
src/
com/
myorg/
Driver我的Driver是一个入口点(包含一个静态的main方法),实际上我将从命令行调用它,该命令行与我的项目的构建/部署的其余部分分开,等等:
java com.myorg.Driver -url blah.example.com等。
在Driver内部,我需要阅读fizz.txt并使用它做一些事情。注意:fizz.txt将始终位于Driver之上的3个父目录,无论发生什么。
在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并没有把"..“作为”父- of“关系的概念。因此,我问:如何使用File (再次,纯JRE)从Driver访问fizz.txt?提前感谢!
发布于 2013-09-20 09:44:27
Java尊重“.”的概念作为“父母”的关系。问题是,它使用当前工作目录作为引用,而不是使用类所在的目录。
如果要将文件与类树放在一起,可以考虑调用getClass().getResourceAsStream("file name")方法来访问它。那么您的代码将不依赖于当前的工作目录。
发布于 2013-09-20 09:39:21
File引用是从Java的执行点开始的上下文引用,而不是类.
就Java而言,您的执行上下文将是MyProject,这意味着您应该尝试使用new File("fizz.txt")。
https://stackoverflow.com/questions/18913408
复制相似问题