我想将某些属性保留到属性文件中,以防它们在程序运行期间被更改。现在,我正在尝试这样做:

Properties properties = new Properties();

    try (FileInputStream in = new FileInputStream("classpath:app.properties")) {
        properties.load(in);
    } catch (IOException e) {
        logger.error("", e);
    }

    properties.setProperty("word", "abc");

    try (FileOutputStream out = new FileOutputStream("classpath:app.properties")) {
       properties.store(out, null);
    } catch (IOException e) {
        logger.error("", e);
    }


但这似乎不起作用。我究竟做错了什么?

最佳答案

为了能够读取和写入属性文件,该文件位于resources文件夹(在标准maven项目结构中)中,可以使用以下命令:

// of course, do not forget to close the stream, after your properties file has been read.
properties.load(Runner.class.getClassLoader().getResourceAsStream("app.properties"));


修改属性文件后,可以使用类似以下的命令:

Runner.class.getClassLoader().getResource("app.properties").getFile()


获取文件的绝对路径。

附言只是为了确保您正在检查正确的文件。您不应该检查resources文件夹中的文件。修改后的文件将与您的类一起放置在根文件夹中,例如targetout

07-28 01:39