黑马程序员技术交流社区

标题: PrintWriter和BufferedWriter [打印本页]

作者: 小小太阳    时间: 2013-5-26 14:43
标题: PrintWriter和BufferedWriter
                 PrintWriter out = new PrintWriter(s.getOutputStream(),true);
        String line = null;
        while((line = bufr.readLine())!=null)
        {
                out.println(line);
        }
        //这里可以用PrintWriter来写,具体是什么原理,
        BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        String line = null;
        while((line = bufr.readLine())!=null)
        {
                bufw.write(line);
                bufw.newLine();
                bufw.flush();
        }
这后者可以用前者来写,具体是什么原理,请高手解答
作者: First    时间: 2013-5-26 19:27
看下api 就会很清楚了
PrintWriter(OutputStream out, boolean autoFlush)
          通过现有的 OutputStream 创建新的 PrintWriter。

PrintWriter 会使用默认的编码把字符转换为字节。
作者: 刘勇强    时间: 2013-5-29 11:51
代码中用到PrintWriter 这个构造方法 PrintWriter(OutputStream out, boolean autoFlush) ,可以直接接受字节流(BufferedWriter只能接受字符流,需要OutputStreamWriter把s.getOutputStream()包成字符流),
第二参数true 让生成的PrintWriter可以自动刷新,就是不需要再调用flush()方法(BufferedWriter需要  bufw.flush();实现).

PrintWriter 用到的println(String x)方法  out.println(line);  ,
public void println(String x) 是打印 String,然后终止该行。此方法的行为就像先调用 print(String) 然后调用 println()  (这个是输出换行) 一样。  所以就不需要BufferedWriter中的换行bufw.newLine();

         
作者: 袁梦希    时间: 2013-5-30 10:49
楼主你好,如果帖子没问题了,那么请把帖子的类型改为“已解决”。如果不会改,请看我的个性签名
作者: 刘胜寒    时间: 2013-5-31 01:03
如果问题以解决,请修改分类。谢谢合作




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