日期:2014-05-20  浏览次数:20859 次

关于java 的properties类
我想把properties文件里的‘=’改为‘:’例如:

username=admin
password=123
改为:
username:admin
password:123
请问各位高手,有可能实现吗?怎么实现?

------解决方案--------------------
从Properties的源码来看,它从文件load的时候是处理了=和:两种情况的,‘
但是在store的时候,却没有选项来设置用=还是:,直接以=保存了,
如果你需要:的,只能自己继承Properties类并覆写它的store()方法了。

它的源码的store和store0

public void store(OutputStream out, String comments)
throws IOException
{
store0(new BufferedWriter(new OutputStreamWriter(out, "8859_1 ")),
comments,
true);
}

private void store0(BufferedWriter bw, String comments, boolean escUnicode)
throws IOException
{
if (comments != null) {
writeComments(bw, comments);
}
bw.write( "# " + new Date().toString());
bw.newLine();
synchronized (this) {
for (Enumeration e = keys(); e.hasMoreElements();) {
String key = (String)e.nextElement();
String val = (String)get(key);
key = saveConvert(key, true, escUnicode);
/* No need to escape embedded and trailing spaces for value, hence
* pass false to flag.
*/
val = saveConvert(val, false, escUnicode);
bw.write(key + "= " + val);
bw.newLine();
}
}
bw.flush();
}


你只需要照搬store,再自己写一个private的store0(可能会出错,那就改成store1,主要是太久没用Java,忘了会不会出错了),把里面的=改成:,当然,你也可以写复杂一点,给个选项。