我想把properties文件里的‘=’改为‘:’例如:username=admin
password=123
改为:
username:admin
password:123
请问各位高手,有可能实现吗?怎么实现?

解决方案 »

  1.   

    那到底可不可以呢?
    我试了一下,即使原来我手动把‘=’改为‘:’,在用setProperty后,程序又改回‘=’,请问有什么办法来在properties文件中出现‘:’,而不是‘=’?
      

  2.   

    从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,忘了会不会出错了),把里面的=改成:,当然,你也可以写复杂一点,给个选项。
      

  3.   

    这就是Property类的格式啊,
    要实现你的功能也很简单啊:用PrintWriter输出自己的格式,再用BufferedReader读回来。