使用StringWriter和StringReader的好處


當你有一組應用程序接口(API)只允許用Writer或Reader作為輸入,但你又想使用String,這時可以用StringWriter或StringReader。

 

假設有下面這樣一個process方法,給這個方法傳遞一個Person對象並把處理結果寫入到一個Writer對象:

public void process_
(Person person, Writer writer); 

這是設計API的一種很好的方式,因為API不必關心對象構造的問題,並且它很簡單且一般化。

Writer類輸出數據到一個文件;不過有時候數據必須保留在內存中,比如想在數據被輸出以前在圖形用戶界面(GUI)上先顯示一下,這時可以用StringWriter。StringWriter不是把數據寫到某種形式的輸出設備上,相反,它寫到內存中。它有一個空的構造器和一個toString方法以得到StringBuffer。例如:

Writer writer = ...;
StringWriter out = new StringWriter(writer);
process(person, out);
StringBuffer result = out.getBuffer( );

當讀入文件時也一樣。可以用StringReader代替Reader來哄騙API,而不必非得從某種形式的文件中讀入。StringReader的構造器要求一個String參數。例如:

Reader in = new StringReader("<conf><panic level="5"/></conf>");
alarm.loadConfig(in);

Writer和Reader類是設計來處理基於字符串的輸入和輸出的。InputStream和OutputStream類則應該用於處理基於字節的I/O。在這個層次的類中,可以用ByteArrayInputStream和ByteArrayOutputStream來達到StringReader和StringWriter的類似效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM