使用java设置属性文件

时间:2013-06-13 06:37:51

标签: java file-io

我有一个带有一些文本字段的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();
}

2 个答案:

答案 0 :(得分:3)

Properties.store()逃避某些字符:

  

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

一旦您使用Properties.load()阅读它们,它们将被取消转义,以便您获得原始值。

答案 1 :(得分:1)

根据java docs 存储API,一些字符将在写入输出流时被转义。

因此,冒号“:”将转换为“\:”

我希望解决方案是在写入outputstream之前转义字符。 转换回属性实例时,将根据需要处理转义字符。