java - 无法编辑通过 Class.getResource() 加载的属性文件

标签 java properties classloader

我正在尝试编写一个方法,该方法将使用 Class.getResource() 读取属性文件,更改其值,然后保存文件。

public void saveDBConnectionValues(String user, String password, String host, int port) throws IOException, URISyntaxException
{
    Properties dbProperties = new Properties();

    File f = new File(this.getClass().getResource("db.properties").toURI());

    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f))));     

    dbProperties.load(reader);

    reader.close();

    dbProperties.setProperty("user", user);
    dbProperties.setProperty("pw", password);
    dbProperties.setProperty("host", host);
    dbProperties.setProperty("port", Integer.toString(port));

    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f)))

    dbProperties.store(writer, null);

    writer.close();

}

我的 db.properties 文件已正确读取,但存储方法似乎不起作用。有人可以解释为什么这不起作用,以及我需要做什么才能让它工作吗?

谢谢

最佳答案

资源和文件是两个不同的东西。资源从类加载器加载,并在类路径中找到。它可以从文件系统、jar 或套接字(或任何其他位置,具体取决于类加载器)加载。写入资源没有意义。

如果您想读写文件,请不要使用资源。使用文件流或读取器/写入器。

关于java - 无法编辑通过 Class.getResource() 加载的属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8494126/

相关文章:

java - 如何从序列化中排除 GWT 中的对象属性?

java - 是否可以使用构造函数将 Spring Form 绑定(bind)到 Object 或通过自定义编辑器将多个字段映射到单个值?

java - 在运行时将 jar 文件添加到类路径,无需反射技巧

java - 是否可以将 "reset"设为类加载器?

Java 类加载器无法在 jar 文件中找到资源

用于重新安排 Outlook 日历事件的 Java 代码?

java - 按字母顺序对 JSONArray 进行排序(单值)

C# 获取/设置语法用法

java - 如何在 JavaFx 中创建打开另一个窗口的按钮,无需 GUI 构建器、FXML、swing 或 awt?

java - 有没有办法从 Hibernate 使用 Postgresql 副本(在表中加载 CSV)?