除了在项目根目录中时,Java无法读取文件

时间:2016-07-27 06:36:21

标签: java intellij-idea

我正在使用IDEA 14来遵循简单的Java教程(JDBC)。作为其中的一部分,我将一些配置属性存储在名为jdbcTutorial.properties的文件中。当我把它放在项目的根目录中时,我可以用以下内容阅读它:

Properties props = new Properties();
props.load(new FileInputStream("jdbcTutorial.properties"));

但是,只要我将其移动到项目中的任何其他目录,我就会收到错误"No such file or directory"无论我是指定相对路径还是绝对路径,都会发生这种情况:

enter image description here

也许有更多标准方法可以使用配置文件,但我真的很想了解我正在观察的行为。谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

默认情况下,根目录将添加到项目的构建路径中。由于您放置文件的目录未添加到项目的构建路径中,因此jvm无法找到该文件。您有两种选择:

  1. 添加用于构建路径的道具的文件夹。
  2. 使用完整路径访问文件,即/ home / user / workspace /....

答案 1 :(得分:1)

构建项目时,IDEA会将资源目录中的文件放入可执行文件夹中。因此,要从该文件获取输入流,您需要直接从jar中获取它。而不是FileInputStream,使用

getClass().getResourceAsStream("jdbcTutorial.properties")

答案 2 :(得分:0)

如果没有为文件提供路径,则java假定此文件位于项目的根文件夹中。所以相对路径"。"总是指向此文件夹。当文件位于其他位置时,请在路径名前添加相应的相对路径,例如" ./ files / configuration / jdbcTutorial.properties"。

当你在路径名之前放置一个绝对文件路径时,它也可以工作,例如&#34; C:/Users/Me/Documents/Java/workspace/thisProject/files/configuration/jdbcTutorial.properties"。< / p>