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的优点:
-
PrintWriter的print、println方法可以接受任意类型的参数,而BufferedWriter的write方法只能接受字符、字符数组和字符串;
-
PrintWriter的println方法自动添加换行,BufferedWriter需要显示调用newLine方法;
-
PrintWriter的方法不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生;
-
PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush);
-
PrintWriter的构造方法更广。