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()。