2011-03-07 47 views
19

我正在設計一個庫,其中一個類應該有能力將內部轉換爲文本的能力。我應該使用哪一類:OutputStreamWriter?他們之間的關鍵區別是什麼(在我的情況下)?Writer或OutputStream?

public interface Memento { 
    void save(OutputStream stream); 
    void save(Writer writer); 
} 

哪一個?

+2

作者/讀者處理字符數據,Streams處理二進制數據。 – asgs 2011-03-07 18:50:39

+0

@asgs在一個簡單的句子中澄清我的疑惑。謝謝哈哈 – CapturedTree 2017-03-04 19:14:44

回答

23

OutputStream是一個面向字節的流。您編寫的任何文本必須使用某種編碼(最常見的是ISO-8859-1或UTF-8)編碼爲字節。 A Writer是一種面向字符的流,它可能會或可能不會將字符內部編碼爲字節,具體取決於寫入的內容。

編輯如果你在設計一個圖書館,那麼如果你提供了一個OutputStream取向的接口被寫入其中的文字,你真的應該提供客戶端類控制編碼中使用的能力。

15

Text? Writer。它旨在處理字符,榮譽編碼。

流/字節數組? OutputStream。作用於原始字節,沒有字符,編碼,字符串等的概念。

+0

和'OutputStreamWriter'有什麼關係?它用於將字節轉換爲字符集? – UnKnown 2016-03-28 07:30:43

+1

@UnKnown - 一個'OutputStreamWriter'是一個'Writer',恰好使用'OutputStream'作爲目的地。在編寫文本時,它將使用構建'OutputStreamWriter'時指定的任何編碼(或取決於平臺的默認編碼)將字符轉換爲字節。爲了將字節轉換爲字符,你可以使用'Reader'。 – 2016-04-28 18:30:46