1. 程式人生 > 其它 >【C# IO】使用StringWriter和StringReader的好處

【C# IO】使用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的類似效果。

程式設計是個人愛好