239
技術社區[雲棲]
Java IO: 字符流的Piped和CharArray
本章節將簡要介紹管道與字符數組相關的reader和writer,主要涉及PipedReader、PipedWriter、CharArrayReader、CharArrayWriter。
PipedReader
PipedReader能夠從管道中讀取字符流。與PipedInputStream類似,不同的是PipedReader讀取的是字符而非字節。換句話說,PipedReader用於讀取管道中的文本。代碼如下:
Reader reader = new PipedReader(pipedWriter); int data = reader.read(); while(data != -1) { //do something with data... doSomethingWithData(data); data = reader.read(); } reader.close();
注意:為了清晰,代碼忽略了一些必要的異常處理。想了解更多異常處理的信息,請參考Java IO異常處理。
read()方法返回一個包含了讀取到的字符內容的int類型變量(譯者注:0~65535)。如果方法返回-1,表明PipedReader中已經沒有剩餘可讀取字符,此時可以關閉PipedReader。-1是一個int類型,不是byte或者char類型,這是不一樣的。
正如你所看到的例子那樣,一個PipedReader需要與一個PipedWriter相關聯,當這兩種流聯係起來時,就形成了一條管道。要想更多地了解Java IO中的管道,請參考Java IO管道。
PipedWriter
PipedWriter能夠往管道中寫入字符流。與PipedOutputStream類似,不同的是PipedWriter處理的是字符而非字節,PipedWriter用於寫入文本數據。代碼如下:
PipedWriter writer = new PipedWriter(pipedReader); while(moreData()) { int data = getMoreData(); writer.write(data); } writer.close();
PipedWriter的write()方法取一個包含了待寫入字節的int類型變量作為參數進行寫入,同時也有采用字符串、字符數組作為參數的write()方法。
CharArrayReader
CharArrayReader能夠讓你從字符數組中讀取字符流。代碼如下:
char[] chars = ... //get char array from somewhere. Reader reader = new CharArrayReader(chars); int data = reader.read(); while(data != -1) { //do something with data data = reader.read(); } reader.close();
如果數據的存儲媒介是字符數組,CharArrayReader可以很方便的讀取到你想要的數據。CharArrayReader會包含一個字符數組,然後將字符數組轉換成字符流。(譯者注:CharArrayReader有2個構造函數,一個是CharArrayReader(char[] buf),將整個字符數組創建成一個字符流。另外一個是CharArrayReader(char[] buf, int offset, int length),把buf從offset開始,length個字符創建成一個字符流。更多細節請參考Java官方文檔)
CharArrayWriter
CharArrayWriter能夠把字符寫入到字符輸出流writer中,並且能夠將寫入的字符轉換成字符數組。代碼如下:
CharArrayWriter writer = new CharArrayWriter(); //write characters to writer. char[] chars = writer.toCharArray();
當你需要以字符數組的形式訪問寫入到writer中的字符流數據時,CharArrayWriter是個不錯的選擇。
最後更新:2017-05-23 11:02:57
上一篇:
Java並發結構
下一篇:
並發性能優化 – 降低鎖粒度
GridView使用技巧小結
用 Pi-hole 和 Orange Pi 阻止家中所有設備上的廣告
PgSQL · 應用案例 · HDB for PG特性(數據排盤與任意列高效率過濾)
PHP的ip2long和long2ip函數的實現原理
HTAP數據庫 PostgreSQL 場景與性能測試之 10 - (OLTP) 字符串搜索 - 前綴查詢
更改Myeclipse默認的Jsp PageEncoding
國內外寬帶性價比差距大 專家解析"假寬帶"成因
雲棲大會數據智能專場,AI黑馬達觀數據、商湯科技、Face+集體亮相
projecteuler_problem6
IBM WebSphere Application Server V6.1 Fix Pack 29於2010.01.18發布