java - Java写.properties文件时程序在 '\'前加 ':'

标签 java postgresql properties io

<分区>

我正在尝试更新程序中的 database.properties 文件。然而, Java 似乎在我的属性文件中添加了额外的字符。

这是我的代码片段。

Properties props = new Properties();

        String propsFileName = "src/resources/properties/" + "database.properties";

        String[] property = new String[4];

        property[0] = "database.properties";
        property[1] = url.getText();
        property[2] = username.getText();
        property[3] = password.getText();

            try {

                FileInputStream configStream = new FileInputStream(propsFileName);
                props.load(configStream);
                configStream.close();

                props.setProperty("jdbc.driverClassName", Commons.driverClassName);
                props.setProperty("jdbc.url", property[1]);
                props.setProperty("jdbc.username", property[2]);
                props.setProperty("jdbc.password", property[3]);
                props.setProperty("jdbc.comment", comments.getText());

                FileOutputStream output = new FileOutputStream(propsFileName);
                props.store(output, null);
                output.close();

            } catch (IOException ex) {
                ex.printStackTrace();
            }

我的控制台上有这个输出,用于检查我是否得到了我想要的字符串,

Properties = org.postgresql.Driver, jdbc:postgresql://192.168.1.1:1234/db, username, password, null Program Ran on Fri Jun 23 16:00:37 PHT 2017 by user=xngapp234

但是,在我的 database.properties 文件中,我得到了这个输出。

jdbc.url=jdbc\:postgresql\://192.168.1.1\:1234/db
jdbc.username=username
jdbc.password=password
jdbc.comment=
jdbc.driverClassName=org.postgresql.Driver

它在“:”之前添加“\”,这总是给我一个错误。任何帮助表示赞赏。 谢谢!

最佳答案

如果您尝试从 Java 程序中存储和加载属性,那么一切都会按预期进行!您的代码显示读取的 url 没有反斜杠 - 就像您存储它一样。

正如 Berger 所写,这是 java.properties 文件中的正常转义。这记录在 Javadoc 中Properties.store() 的:

[...] The key and element characters #, !, =, and : are written with a preceding backslash to ensure that they are properly loaded. [...]

如果您尝试使用 Properties 类来编写一个文件以供非 Java 程序使用,那么您就不走运了,因为这不是此类的目的。为此,您需要使用另一个库。

javadoc 状态

The Properties class represents a persistent set of properties.

“.properties”格式只是一组属性的一种表示(XML 格式是另一种格式)。

关于java - Java写.properties文件时程序在 '\'前加 ':',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717038/

相关文章:

java - Lucene TextField 未标记化

java do while循环不断重复,我不明白为什么

java - JAX-WS复杂对象

postgresql - Postgres 中的 boolean 类型无法按预期工作

java - 在 tomcat 中重新部署新版本的 .war 时更改属性值

javascript - 检查对象属性时与 undefined 或 "undefined"进行比较。有什么不同?

java - 创建性设计模式在依赖注入(inject)环境(如 SpringBoot)中无用吗?

java - 如何使用条件或查询来使用一级缓存? ( hibernate )

windows - 使用 npm 安装 postgres 问题

c# - C#:如何在使用“默认”存储时向属性添加前提条件?