黑马程序员技术交流社区

标题: 关于Properties中list(PrintWriter p)方法的疑问 [打印本页]

作者: freehiker    时间: 2013-11-13 13:00
标题: 关于Properties中list(PrintWriter p)方法的疑问
本帖最后由 freehiker 于 2013-11-13 13:34 编辑
  1. import java.io.PrintStream;
  2. import java.io.PrintWriter;
  3. import java.util.Properties;


  4. public class PropertiesListMethod {

  5.         public static void main(String[] args) throws Exception {
  6.                 // TODO Auto-generated method stub
  7.                 Properties props = System.getProperties();
  8.                 //源地址是内存中的props,操作的是字节,所以用打印字节流
  9.                 props.list(new PrintStream("testStream.txt"));
  10.                 props.list(new PrintWriter("testWriter.txt"));
  11.         }

  12. }
复制代码
如代码所示:list中使用PrintStream可以理解,但是为什么list方法中还可以用PrintWriter呢?上述的例子中,testStream.txt有信息,而testWriter.txt中没有信息,求list带PrintWriter的示例!!!

作者: 文涛    时间: 2013-11-13 13:29
本帖最后由 文涛 于 2013-11-13 13:43 编辑

PrintWriter是打印字符流,这里应该是可以打印的,只是你忘记了一点,PrintWriter是有缓冲区的,没有刷新缓冲区所以根本就没有数据被写出来。
    你调用list只是将数据输出到了writer的缓冲区,这样没有刷新,所以就造成了上诉结果。    你可以这样写PrintWriter pw=new PrintWriter("testWriter.txt");
                         Props.list(pw);
                         pw.flush();//刷新缓冲区
               


作者: freehiker    时间: 2013-11-13 13:33
文涛 发表于 2013-11-13 13:29
PrintWriter是打印字符流,这里应该是可以打印的,只是你忘记了一点,PrintWriter是有缓冲区的,没有刷新缓 ...

嗯,测试了,确实是因为PrintWriter有缓冲区的原因。谢啦
作者: 文涛    时间: 2013-11-13 13:34
freehiker 发表于 2013-11-13 13:33
嗯,测试了,确实是因为PrintWriter有缓冲区的原因。谢啦

能帮到你很开心
作者: 文涛    时间: 2013-11-13 13:35
freehiker 发表于 2013-11-13 13:33
嗯,测试了,确实是因为PrintWriter有缓冲区的原因。谢啦

能帮到你很开心
作者: freehiker    时间: 2013-11-13 13:38
文涛 发表于 2013-11-13 13:29
PrintWriter是打印字符流,这里应该是可以打印的,只是你忘记了一点,PrintWriter是有缓冲区的,没有刷新缓 ...

PrintStream(String fileName)
          创建具有指定文件名称且不带自动行刷新的新打印流。

PrintStream也不是自动刷新的噢 。
作者: 文涛    时间: 2013-11-13 13:43
freehiker 发表于 2013-11-13 13:38
PrintStream(String fileName)
          创建具有指定文件名称且不带自动行刷新的新打印流。

恩,发现了,谢谢指出呀
作者: freehiker    时间: 2013-11-13 13:49
文涛 发表于 2013-11-13 13:43
恩,发现了,谢谢指出呀

明白了,原理是Writer流和OutputStream流的区别。




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