我正在尝试在我的程序中更新我的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
它在':'之前添加'\',这总是给我一个错误。任何帮助表示赞赏。 谢谢!
答案 0 :(得分:2)
如果您正在尝试从Java程序存储和加载属性,那么一切都按预期工作!您的代码显示读取的URL没有反斜杠 - 就像您存储它一样。
正如Berger所写,这是java.properties文件中的正常转义。这在Properties.store()的Javadoc中有记录:
[...]键和元素字符#,!,=和:用a写 前面的反斜杠,以确保它们正确加载。 [...]
如果您尝试使用Properties类来编写要由非Java程序使用的文件,那么您运气不好,因为这不是此类的目的。你需要使用另一个库。
javadoc陈述
Properties类表示一组持久的属性。
“.properties”-format只是一组属性的一种表示形式(XML格式是另一种属性)。