如何確定使用哪一個IO對象

2014.9.3


來源於畢向東老師的講解


關於java的輸入輸出,最痛苦的就是:流對象太多,不知道用哪一個


首先,確定體系


一、明確源和目的。

    確定是輸出流:writer  outputstream

    還是輸入流: reader   inputstream


二、確定操作的數據是不是文本,

然後,我們明確要使用的對象。

       通過設備來區分。



用於操作文件:

fileReader(從文本文件(字符)讀取)(編碼方式是默認的)(要指定就用InputStreamReader)

fileWriter(向文本(字符)文件寫入)默認覆蓋,可以指定添加在後邊

fileInputStream(從二進制文件讀取)

fileOutputStream


PrintStream 是處理流,可以包裝OutputStream,用於從內存中方便的向其中print(任何類型)。



控制檯:Sytem.out(PrintStream).


鍵盤:System.in(InputStream).


處理流:

PrintStream,用於處理OutputStream,方便的向其中寫入任何數據。(有自動刷新,println或者“\n”)

可以指定編碼。PrintStream(OutputStream,"碼錶");



轉換流:

InputStreamReader

InputStreamReader reader=new InputStreamRaeder(System.in);

BufferedReader br=new BufferedReader(reader); 


OutputStreamWriter


轉換流的字符編碼:

OutputStreamWriter(OutputStream out,"碼錶")

InputStreamReader(InputStream in,"碼錶")

        其他編碼:

String的構造方法有指定碼錶

解碼:String(byte[],charset);

編碼:getBytes(charset);




處理字符串的流:

StringReader

從已有的字符串中讀取:

String src="fgkasdhfkjhsdfkjhads";

StringReader sr=new StringReader(src);

StringWriter

寫後,形成一個新的字符串,內部使用的的StringBuffer.

StringWriter sw=new StringWriter();

sw.write("dfasdhjfasd");

sw.toString();






緩衝流:

BufferedReader,處理Reader,提供讀取一行的功能。 

BufferedWriter,處理Writer,提供newLine()。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章