如何使用放在linux中的属性文件并在Java代码中使用

时间:2017-06-28 04:01:06

标签: java linux maven properties pom.xml

我有一个java代码,它有属性文件,并且在我的java代码中有使用属性文件的逻辑,但是我们希望将该属性文件放在Linux路径中。 现在,由于我们是一个maven项目,我试图在我的java代码中提供该文件的完整linux路径,比如" /home/raj/config.properties"并给出空指针异常。我的猜测是默认它在src / main / resources路径中寻找config.properties。我很累在网上搜索,找不到任何线索。 net中显示的所有示例都将外部资源放在同一个java项目中,但是在这种情况下它是在java项目之外的linux路径中,请建议。

  public static  Map<String, String> readPropertyFile(final String 
    propFileName)
            throws FileNotFoundException {
        final Properties prop = new Properties();
            prop.load(Thread.currentThread().getContextClassLoader()
                    .getResourceAsStream(propFileName));
    }
    final HashMap<String, String> dbConfigValues = (HashMap<String, String>) 
    DatabaseConnector
                .readPropertyFile(CONFIG_PROPERTIES);

1 个答案:

答案 0 :(得分:0)

您可以使用load方法从InputStream或Reader

加载

请参阅https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load(java.io.Reader)

     FileReader rdr = new FileReader(pathedfilename);
     Properties props = new Properties();
     props.load(rdr);

进一步说明

    String pathedfilename = "d:/temp/my.properties";
    try {
        FileReader rdr = new FileReader(pathedfilename);
        FileWriter writer = new FileWriter(pathedfilename);
        Properties props = new Properties();
        props.load(rdr);
        props.setProperty("key1", "myval");
        props.store(writer, "saved");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

BTW 更好地使用try-with-resources确保FileWriter已关闭