【发现问题】Java中PrintWriter和BufferedWriter的区别
BufferedWriter:
將文本寫入字符輸出流,緩沖各個字符從而提供單個字符,數(shù)組和字符串的高效寫入。通過write()方法可以將獲取到的字符輸出,然后通過newLine()進行換行操作。BufferedWriter中的字符流必須通過調(diào)用flush方法才能將其刷出去。并且BufferedWriter只能對字符流進行操作。如果要對字節(jié)流操作,則使用BufferedInputStream。
PrintWriter:
向文本輸出流打印對象的格式化表示形式(Prints formatted representations of objects to a text-output stream)。PrintWriter相對于BufferedWriter的好處在于,如果PrintWriter開啟了自動刷新,那么當PrintWriter調(diào)用println,prinlf或format方法時,輸出流中的數(shù)據(jù)就會自動刷新出去。PrintWriter不但能接收字符流,也能接收字節(jié)流。
Socket編程中,盡量用PrintWriter取代BufferedWriter。
PrintWriter的優(yōu)點:
PrintWriter的print、println方法可以接受任意類型的參數(shù),而BufferedWriter的write方法只能接受字符、字符數(shù)組和字符串;
PrintWriter的println方法自動添加換行,BufferedWriter需要顯示調(diào)用newLine方法;
PrintWriter的方法不會拋異常,若關心異常,需要調(diào)用checkError方法看是否有異常發(fā)生;
PrintWriter構(gòu)造方法可指定參數(shù),實現(xiàn)自動刷新緩存(autoflush);
PrintWriter的構(gòu)造方法更廣。
——————————————————————-
總結(jié):
在使用BufferedReader中的readLine方法接收BufferedWriter中的字符流時,由于readLine是在讀取到換行符的時候才將整行字符返回,所以BufferedWriter方法在錄入一段字符后要使用newLine方法進行一次換行操作,然后再把字符流刷出去。而PrintWriter由于可以開啟自動刷新,并且其中的println方法自帶換行操作。所以代碼實現(xiàn)起來要比BufferedWriter簡單一些。
PrintWriter和BufferedWriter都是繼承java.io.Writer,所以很多功能都一樣。不過PrintWriter提供println()方法可以寫不同平臺的換行符,而BufferedWriter可以任意設定緩沖大小。OutputStream可以直接傳給PrintWriter(BufferedWriter不能接收),如:
PrintWriter out = new PrintWriter(new BufferedOutputStream(new FileOutputStream("foo.out")));或者用OutputStreamWriter來將OutputStream轉(zhuǎn)化為Wrtier.這時就可以用BufferedWriter了。JDK API documents中都寫的很清楚了。
轉(zhuǎn)載于:https://blog.51cto.com/lyhmm/1945301
總結(jié)
以上是生活随笔為你收集整理的【发现问题】Java中PrintWriter和BufferedWriter的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《交互式程序设计 第2版》一3.6 关系
- 下一篇: matlab color选取(颜色对照表