IO流中對象很多,解決問題(處理設備上的數據時)到底該用哪個對象呢?
把IO流進行了規律的總結(四個明確):
? 明確一:要操作的數據是數據源還是數據目的。
源:InputStream??? Reader
?目的:OutputStream Writer
先根據需求明確要讀,還是要寫。
? 明確二:要操作的數據是字節還是文本呢?
源:
??????????????????????????? 字節:InputStream
??????????????????????????? 文本:Reader
目的:
??????????????????????????? 字節:OutputStream
??????????????????????????? 文本:Writer
?明確三:明確數據所在的具體設備。
源設備:
??????????????????????????? 硬盤:文件? File開頭。
??????????????????????????? 內存:數組,字符串。
??????????????????????????? 鍵盤:System.in;
??????????????????????????? 網絡:Socket
?目的設備:
??????????????????????????? 硬盤:文件? File開頭。
??????????????????????????? 內存:數組,字符串。
??????????????????????????? 屏幕:System.out
??????????????????????????? 網絡:Socket
完全可以明確具體要使用哪個流對象
?明確四:是否需要額外功能呢?
額外功能:
? 轉換嗎?轉換流。InputStreamReader OutputStreamWriter
? 高效嗎?緩沖區對象。BufferedXXX
???? InputStream
?????? FileInputStream
?????? BufferedInputStream
?
OuputStream
?? FileOutputStream
?? BufferedOuputStream
?
?
Writer
? OutputStreamWriter
???? FileWriter
????? BufferedWriter
?
Reader
? InputStreamReader
???? FileReader
?BufferedReader