首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java的File中获取父目录

在Java的File中获取父目录
EN

Stack Overflow用户
提问于 2013-09-20 09:35:44
回答 2查看 40关注 0票数 0

Note:我只对这里的“纯JRE”解决方案感兴趣:也就是说,涉及到JRE附带的类型的解决方案(很可能还位于java.io包中)。我确信, Apache等提供了一些实用工具类,它们可以很好地从单个方法调用中实现这一点,但是这里需要纯。

我有以下运行时目录结构:

代码语言:javascript
复制
MyProject/
    fizz.txt
    src/
        com/
            myorg/
                Driver

我的Driver是一个入口点(包含一个静态的main方法),实际上我将从命令行调用它,该命令行与我的项目的构建/部署的其余部分分开,等等:

代码语言:javascript
复制
java com.myorg.Driver -url blah.example.com

等。

Driver内部,我需要阅读fizz.txt并使用它做一些事情。注意:fizz.txt始终位于Driver之上的3个父目录,无论发生什么。

Driver内部,我有以下代码:

代码语言:javascript
复制
File fizz = new File("../../../fizz.txt");
System.out.println("fizz = " + fizz.getAbsolutePath());

当我运行Driver时,会得到以下异常:

代码语言:javascript
复制
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?提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-20 09:44:27

Java尊重“.”的概念作为“父母”的关系。问题是,它使用当前工作目录作为引用,而不是使用类所在的目录。

如果要将文件与类树放在一起,可以考虑调用getClass().getResourceAsStream("file name")方法来访问它。那么您的代码将不依赖于当前的工作目录。

票数 0
EN

Stack Overflow用户

发布于 2013-09-20 09:39:21

File引用是从Java的执行点开始的上下文引用,而不是类.

就Java而言,您的执行上下文将是MyProject,这意味着您应该尝试使用new File("fizz.txt")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18913408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档