BufferedWriter:

将文本写入字符输出流,缓冲各个字符从而提供单个字符,数组和字符串的高效写入。通过write()方法可以将获取到的字符输出,然后通过newLine()进行换行操作。BufferedWriter中的字符流必须通过调用flush方法才能将其刷出去。并且BufferedWriter只能对字符流进行操作。如果要对字节流操作,则使用BufferedInputStream。

PrintWriter:

向文本输出流打印对象的格式化表示形式(Prints formatted representations of objects to a text-output stream)。PrintWriter相对于BufferedWriter的好处在于,如果PrintWriter开启了自动刷新,那么当PrintWriter调用println,prinlf或format方法时,输出流中的数据就会自动刷新出去。PrintWriter不但能接收字符流,也能接收字节流。

Socket编程中,尽量用PrintWriter取代BufferedWriter。

PrintWriter的优点:

  1. PrintWriter的print、println方法可以接受任意类型的参数,而BufferedWriter的write方法只能接受字符、字符数组和字符串;

  2. PrintWriter的println方法自动添加换行,BufferedWriter需要显示调用newLine方法;

  3. PrintWriter的方法不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生;

  4. PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush);

  5. PrintWriter的构造方法更广。

——————————————————————-

总结:

在使用BufferedReader中的readLine方法接收BufferedWriter中的字符流时,由于readLine是在读取到换行符的时候才将整行字符返回,所以BufferedWriter方法在录入一段字符后要使用newLine方法进行一次换行操作,然后再把字符流刷出去。而PrintWriter由于可以开启自动刷新,并且其中的println方法自带换行操作。所以代码实现起来要比BufferedWriter简单一些。

PrintWriter和BufferedWriter都是继承java.io.Writer,所以很多功能都一样。不过PrintWriter提供println()方法可以写不同平台的换行符,而BufferedWriter可以任意设定缓冲大小。OutputStream可以直接传给PrintWriter(BufferedWriter不能接收),如:

PrintWriter out = new PrintWriter(new BufferedOutputStream(new FileOutputStream("foo.out")));

或者用OutputStreamWriter来将OutputStream转化为Wrtier.这时就可以用BufferedWriter了。JDK API documents中都写的很清楚了。

转载于:https://blog.51cto.com/lyhmm/1945301

【发现问题】Java中PrintWriter和BufferedWriter的区别相关推荐

  1. Java中equals()方法和==的区别分析

    Java中equals方法和==的区别分析 equals(Object obj)方法,将对象与传入的obj进行比较,相等返回true,否则返回false.equals方法和"==" ...

  2. java 中long和Long的区别

    转载自: https://blog.csdn.net/z1571978029/article/details/79059480 前言 最近在学习java,接触到了long类型,发现网上这方面的资料较乱 ...

  3. Java中Long和long的区别

    转载自: https://blog.csdn.net/z1571978029/article/details/79059480 前言 最近在学习java,接触到了long类型,发现网上这方面的资料较乱 ...

  4. 【翻译】Java中String, StringBuffer, StringBuilder的区别

    2019独角兽企业重金招聘Python工程师标准>>> String 是  Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...

  5. java中的异常种类和区别以及处理机制和区别

    java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...

  6. java中ArrayList和LinkedList的区别

    首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...

  7. java中Runnable和Callable的区别

    文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...

  8. java中wait和sleep的区别

    文章目录 Wait和sleep的区别 唤醒wait和sleep java中wait和sleep的区别 在本篇文章中,我们将会讨论一下java中wait()和sleep()方法的区别.并讨论一下怎么使用 ...

  9. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

最新文章

  1. UA SIE545 优化理论基础4 对偶理论简介6 求解对偶问题的梯度算法
  2. java 怎么输出地址,Java中char[]输出不是内存地址的原因详解
  3. unity json解析IPA后续
  4. 前手淘前端负责人:前端人如何保持竞争力?
  5. 【MM系列】SAP里批量设置采购信息记录删除标记
  6. 次世代3d游戏建模,零基础的小白可以学吗?
  7. Redis集群原理简述
  8. Shell脚本实现判断一个数是否为质数
  9. 综述:生成自动驾驶的高精地图技术(3)
  10. 计算机玩游戏黑屏的原因,为什么电脑玩一会游戏就黑屏,这是为什么??????...
  11. MTK平台创建Vendor方法(最大化复用代码)
  12. java version什么意思_输入java -version命令后提示结果如下,是什么意思??哪位能看懂,在线等。。。。...
  13. 《手把手教你移植InfoNES(到HANKER-LM4F232)》
  14. 2018年第九届蓝桥杯C/C++A组省赛 题面部分题解
  15. 基于禁忌搜索优化的VRP问题求解matlab仿真
  16. 语音识别公司排名YQ5969智能语音识别模块的快速崛起
  17. 机器人产业变革:后来者的机会之窗|财经封面报道
  18. 【win10 VS2019 opencv4.6 配置参考】
  19. Firefox浏览器的安装及插件使用
  20. Apache服务器和tomcat服务器区别

热门文章

  1. Ubuntu 16.04 搭建Android开发环境
  2. ASP.NET(c#)实现重定向的三种方法的总结
  3. 转使用jQuery Ajax的内存回收
  4. javasript 操作option select
  5. .NET中栈和堆的比较1
  6. C# ASP.NET MVC 微信和支付宝H5支付开发及Demo
  7. java 图片合成 红色失真_Java - 处理某些图片泛红
  8. c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较
  9. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
  10. CentOS x64 安装gcc