在Java中编写.properties文件时,程序在':'之前添加'\'

时间:2017-06-23 08:47:45

标签: 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,   密码,null程序Ran于6月23日星期五16:00:37 PHT 2017 by   用户= 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

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

1 个答案:

答案 0 :(得分:2)

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

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

  

[...]键和元素字符#,!,=和:用a写   前面的反斜杠,以确保它们正确加载。 [...]

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

javadoc陈述

  

Properties类表示一组持久的属性。

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