获取项目 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);
}
已通过 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);
}