黑马程序员技术交流社区

标题: Properties类store方法的一点疑问 [打印本页]

作者: 王冰    时间: 2012-7-12 01:21
标题: Properties类store方法的一点疑问
本帖最后由 王冰 于 2012-7-12 07:26 编辑

public static void loadDemo()throws IOException
{
      Properties prop = new Properties();
      FileInputStream fis = new FileInputStream("info.txt");
      //将流中的数据加载进集合
      prop.load(fis);
      prop.setProperty("wangwu","39");
      FileOutputStream fos = new FileOutputStream("info.txt");
      prop.store(fos,"haha");//这里加载后就写入文件输出流了,
                                         //向流中写数据再将文件存入硬盘不是要刷新吗,这里不用刷新???
      prop.list(System.out);
      fos.close();
      fis.close();
}

作者: 张天天    时间: 2012-7-12 07:15
你说的刷新是指的flush方法么?
其实关于Properties与文件的操作其实jdk中已经为我们封装好了,
我们拿来用就可以了,其内部实现的方法是通过缓冲流store0方法实现的:
  1. private void store0(BufferedWriter bw, String comments, boolean escUnicode)
  2.         throws IOException
  3.     {
  4.         if (comments != null) {
  5.             writeComments(bw, comments);
  6.         }
  7.         bw.write("#" + new Date().toString());
  8.         bw.newLine();
  9.         synchronized (this) {
  10.             for (Enumeration e = keys(); e.hasMoreElements();) {
  11.                 String key = (String)e.nextElement();
  12.                 String val = (String)get(key);
  13.                 key = saveConvert(key, true, escUnicode);
  14.                 /* No need to escape embedded and trailing spaces for value, hence
  15.                  * pass false to flag.
  16.                  */
  17.                 val = saveConvert(val, false, escUnicode);
  18.                 bw.write(key + "=" + val);
  19.                 bw.newLine();
  20.             }
  21.         }
  22.         bw.flush();
  23.     }
复制代码
可以看到最后已经调用了flush方法,将内存中的数据写入到文件了
作者: 王冰    时间: 2012-7-12 07:18
张天天 发表于 2012-7-12 07:15
你说的刷新是指的flush方法么?
其实关于Properties与文件的操作其实jdk中已经为我们封装好了,
我们拿来用 ...

store方法调用的store0????
作者: 张天天    时间: 2012-7-12 07:21
王冰 发表于 2012-7-12 07:18
store方法调用的store0????

有什么疑问么
  1. public void store(OutputStream out, String comments)
  2.         throws IOException
  3.     {
  4.         store0(new BufferedWriter(new OutputStreamWriter(out, "8859_1")),
  5.                comments,
  6.                true);
  7.     }
复制代码

作者: 王冰    时间: 2012-7-12 07:25
张天天 发表于 2012-7-12 07:21
有什么疑问么

哦,知道了,谢谢啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2