2011-05-16 50 views
3

有相當多的類擴展java.io.Writer和java.io.Reader。java.io作家和讀者 - 你怎麼知道應該使用哪個?

是否有情況需要使用一個而不是另一個?他們每個人的總體用處是什麼(爲什麼有那麼多)?

他們有不同的「表現」屬性嗎?他們都只是從流中寫/讀 - 不是嗎?

有沒有人知道一個寫法,它會給我的例子,你會在哪裏使用一個在另一個。

同樣的問題也適用於處理實際的文件。似乎有多種方法可以打開要讀取/寫入的文件流。

謝謝。

+1

請查看[基本I/O教程](http://download.oracle.com/javase/tutorial/essential/io/)。 – iruediger 2011-05-16 11:37:40

回答

4

讀者的名字說的很多關於用例。

FileReader/StringReader/CharArrayReader/InputStreamReader有不同的實現可以從Files,Strings,CharArrays或InputStream中讀取。用法取決於你的來源。

LineNumberReader/PushbackReader/BufferedReader無法正常工作'獨立',您可以將它們與其他源讀取器結合使用。例如new BufferedReader(new FileReader(file));

本讀者爲您提供了可能想要執行的特殊情況的方法。 BufferedReader逐行讀取,或LineNumberReader獲取行號。

PipedReader非常適合將您的程序的零件/主題上的數據表單讀取到另一個零件/主題與PipedWriter的組合中。 ...

...對於特殊情況,您可以使用Reader和Writer構建Chains,如Decorator模式。

+0

+1:簡明扼要的說明:) – posdef 2011-05-16 11:27:04

1

這是他們選擇的特定設計模式。您需要的課程是基於「您需要做什麼」的內容。如果你想從文件中讀取,你可能需要一個FileReader。對於大多數這些類,您可以將其中一個包裝到另一箇中以獲得所需的功能。

這是a nice question我剛纔問過,關於使用權Writer類。

相關問題