在java中读取属性文件时出错[复制]

问题描述 投票:0回答:4

这个问题在这里已有答案:

我的项目目录看起来像这样

enter image description here

我收到以下错误

java.io.FileInputStream.open中的java.io.FileInputStream.open0(本地方法)中的线程“main”java.io.FileNotFoundException:/resources/config.properties(无此类文件或目录)中的异常(FileInputStream.java: 195)java.io.FileInputStream。(FileInputStream.java:138)at java.io.FileInputStream。(FileInputStream.java:93)at quartztest.QuartzTest.main(QuartzTest.java:36)/home/seng/.cache /netbeans/8.1/executor-snippets/run.xml:53:Java返回:1 BUILD FAILED(总时间:0秒)

我的代码如下

Properties prop = new Properties();
InputStream input = null;

input = new FileInputStream("/resources/config.properties");
prop.load(input);
java properties
4个回答
0
投票

由于资源文件夹是源文件夹,您可以使用以下命令获取InputStream

input = QuartzTest.class.getResourceAsStream("/resources/config.properties");

0
投票

尝试使用此加载:

//Get file from resources folder
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config.properties").getFile());

0
投票

首先,以“/”开头表示您的搜索从root开始,而不是从子目录开始。

接下来,资源文件夹可能位于项目文件夹中,因此您必须使用getClass()。getClassloader()...来读取文件。然后,您只能使用文件名(如果它是唯一的),否则您必须提供使其唯一的路径。

如果使用FileInputStream,则必须提供文件的完整路径。


0
投票

我在这里看到两个选项:

  1. input = new FileInputStream("src/main/resources/config.properties");
  2. ClassLoader classloader = Thread.currentThread().getContextClassLoader(); InputStream is = classloader.getResourceAsStream("config.properties"); 第二个是首选,因为您需要根据资源文件夹指定相对路径

如果不从静态上下文中使用它,则可以简化检索类加载器

ClassLoader classLoader = getClass().getClassLoader();
© www.soinside.com 2019 - 2024. All rights reserved.