Eclipse项目无法使用相对路径引用文件

时间:2012-02-28 23:00:13

标签: java eclipse file relative-path

我的文件位于src目录下。但是,当我尝试使用" src / readme.txt"找不到该文件。 事实上,它声明java正在寻找" C:\ Documents and settings \ john \ My Documents \ Downloads \ eclipse-win32 \ eclipse \ coolCarsProject \ src \ readme.txt"。

我该如何解决这个问题?我不想一直放在绝对路径上。

我是否需要修复类路径,构建路径或更改项目根目录等?对于新手来说,从Eclipse的大约1000个设置来看,这一点并不明显。

3 个答案:

答案 0 :(得分:9)

首先,您必须决定是否要从文件系统加载文件,或者文件是否实际上与您的应用程序代码捆绑在一起。

如果是前者,那么您应该考虑在实际部署时如何启动应用程序,因为使用相对文件路径意味着程序应始终从相同位置启动:相对路径相对于位置从程序启动的位置(当前目录)。如果这真的是你想要的,那么在Eclipse中编辑你的启动配置,转到 Arguments 选项卡,然后设置你想要的工作目录。但是src目录不是放置此文件的位置,因为这会将文件复制到目标目录以及类,这些类可能会在部署应用程序后放入jar中。

如果是后者,则不应将文件视为文件,而应将其视为ClassLoader加载的资源,使用ClassLoader.getResourceAsStream()(或Class.getResourceAsStream())。阅读这些方法的javadoc以了解要传递的路径。如果将文件直接放在src下,它将被Eclipse复制到目标目录以及类中的默认包中。因此,您应该使用SomeClass.class.getResourceAsStream("/readme.txt")加载它。

答案 1 :(得分:1)

使用相对于当前工作目录的路径通常不是一个好主意,因为通常很难确定当前工作目录的内容。在Eclipse中,它将是你的项目文件夹(除非你在启动配置中将它设置为不同的东西),在webapps中它将是webapp的根目录,在命令行应用程序中它可以是任何东西。

答案 2 :(得分:1)

试试这个:

String filePath = ".\\userFiles\\data.json";

其中«。\ _»是Eclipse项目的根目录,«userFiles»是一个包含Eclipse项目内用户文件的文件夹。既然我们在谈论Windows操作系统,我们必须在Linux中使用«\»而不是«/»,但«\»是保留符号,所以我们必须输入«\\»(双反斜杠)来获得期望的结果。