我有一个带有一些文本字段的Swing Frame,它们显示Properties文件中的当前值。在文本字段中修改这些属性后,应将其保存回属性文件中。我拥有的属性是数据库连接参数。我的连接参数如下
driver--org.postgresql.Driver
url--jdbc:postgresql://localhost/bank
user--postgres
password--aaa
但是当它更新时,在url字段中,哪里有':',它会添加'\'
比如URL2=jdbc\:postgresql\://localhost/bank
。我怎么能避免这个?我在设置属性文件之前尝试打印内容,然后就可以了。
我在设置属性之前打印了字符串,它就在那里;
org.postgresql.Driver **jdbc:postgresql://localhost/bank**postgres**aaa
有人可以帮助我。 在此先感谢
public static void update(String driver,String url, String user,String password) throws SecurityException, IOException{
System.out.println(driver+" **"+url+"**"+user+"**"+password);
FileInputStream in = new FileInputStream("evaluator.properties");
Properties props = new Properties();
props.load(in);
in.close();
FileOutputStream out = new FileOutputStream("evaluator.properties");
props.setProperty("Driver2", driver);
props.setProperty("URL2", url);
props.setProperty("Login2", user);
props.setProperty("Password2", password);
props.store(out, null);
out.close();
}
答案 0 :(得分:3)
Properties.store()逃避某些字符:
键和元素字符#,!,=和:使用前面的反斜杠写入,以确保它们已正确加载。
一旦您使用Properties.load()
阅读它们,它们将被取消转义,以便您获得原始值。
答案 1 :(得分:1)
根据java docs 存储API,一些字符将在写入输出流时被转义。
因此,冒号“:”将转换为“\:”
我希望解决方案是在写入outputstream之前转义字符。 转换回属性实例时,将根据需要处理转义字符。