【问题标题】:Error in reading properties file in java [duplicate]在java中读取属性文件时出错[重复]
【发布时间】:2018-05-31 15:06:12
【问题描述】:

我的项目目录是这样的

我收到以下错误

线程“主”java.io.FileNotFoundException 中的异常: /resources/config.properties(没有这样的文件或目录)在 java.io.FileInputStream.open0(本机方法)在 java.io.FileInputStream.open(FileInputStream.java:195) 在 java.io.FileInputStream.(FileInputStream.java:138) 在 java.io.FileInputStream.(FileInputStream.java:93) 在 quartztest.QuartzTest.main(QuartzTest.java:36) /home/seng/.cache/netbeans/8.1/executor-sn-ps/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


【解决方案1】:

首先,以“/”开头意味着您的搜索从根目录开始,而不是从子目录开始。

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

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

【讨论】:

  • 对我来说最好的答案!!!
【解决方案2】:

我在这里看到两个选项:

  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();

【讨论】:

    【解决方案3】:

    由于资源文件夹是源文件夹,您可以通过以下方式获取InputStream

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

    【讨论】:

      【解决方案4】:

      尝试使用它来加载:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 2011-09-28
        • 2015-05-07
        • 1970-01-01
        • 2018-02-15
        • 2013-12-28
        • 1970-01-01
        相关资源
        最近更新 更多