这个问题在这里已有答案:
我的项目目录看起来像这样
我收到以下错误
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);
由于资源文件夹是源文件夹,您可以使用以下命令获取InputStream
:
input = QuartzTest.class.getResourceAsStream("/resources/config.properties");
尝试使用此加载:
//Get file from resources folder
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config.properties").getFile());
首先,以“/”开头表示您的搜索从root开始,而不是从子目录开始。
接下来,资源文件夹可能位于项目文件夹中,因此您必须使用getClass()。getClassloader()...来读取文件。然后,您只能使用文件名(如果它是唯一的),否则您必须提供使其唯一的路径。
如果使用FileInputStream,则必须提供文件的完整路径。
我在这里看到两个选项:
input = new FileInputStream("src/main/resources/config.properties");
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("config.properties");
第二个是首选,因为您需要根据资源文件夹指定相对路径如果不从静态上下文中使用它,则可以简化检索类加载器
ClassLoader classLoader = getClass().getClassLoader();