获取项目 src 中的文件路径,并将其传递给 fileoutputstream 进行覆盖

Get path of file inside project src and pass it to fileoutputstream for overwriting

已通过 getResourcestream 成功访问 属性 文件并使用 fileinputstream 读取。现在我需要在附加新的 属性

后覆盖同一个文件

问题: 无法获取文件输出流覆盖所需的同一文件的路径。

属性 文件位于 src/main/resources. 并尝试从 src/main/java/com/web/my.class 更新

    Properties prop = new Properties();
    InputStream in = getClass().getClassLoader().getResourceAsStream("dme.properties");
    FileOutputStream out = null;
    try {
         prop.load(in);}  // load all old properties
    catch (IOException e) {}
    finally {try { in.close(); } catch (IOException e) {} }
    prop.setProperty("a", "b"); //new property
    try {
        out = new FileOutputStream("dme.properties");
        prop.store(out, null);} //overwrite
    catch (IOException e) {} 
    finally {try {out.close();} catch (IOException e) {} }
  }

您可以获取资源 URL 而不是获取 InputStream 并使用它来读取和写入来自 src/main/resources:

的文件
Properties properties = new Properties();
File file = new File(this.getClass().getResource("/dme.properties").toURI());
try (InputStream is = new FileInputStream(file)) {
    properties.load(is);
}
properties.setProperty("a", "b");
try (OutputStream os = new FileOutputStream(file)) {
    properties.store(os, null);
}