IO流的選擇是開發中常常遇到的問題?下面是1張高度總結的IO流圖,1張圖弄定!
-------------------------------------------------------------------------------------------------------------------------------------------
簡圖:
IO流使用規律:
明確1、明確源和使用目的:(注意:讀寫都是針對內存就行操作,輸入和輸出是相對硬盤的輸入還是輸出)記住這個以后就不會混掉!
源: 就要讀,就需要使用輸入系。InputStrea, Reader
目的:就需要些,就是需要使用輸出系。
明確2:處理的數據是不是是純文本數據。
是:就使用字符流。
源:Reader
目的:Writer
否:就是用字節流。
源:InputStream
目的:OutputStream
兩個明確都肯定后,可以肯定需要使用哪一個體系。
明確3:具體是哪一個裝備,明確裝備的目的是為了肯定具體的對象。
源裝備:
鍵盤,System.in
硬盤,操作文件的對象。File開頭的流對象。
內存,數組。ByteArrayInputStream CharArrayReader StringReader
網絡,Socket
目的裝備:
硬盤,操作文件的對象。File開頭的流對象。
屏幕(控制臺)System.out
內存,數組 ByteArrayOutputStream CharArrayWriter StringWriter
網絡,Socket
需求:將字符串數據寫到硬盤上。
目的:OutputStream Writer
純文本?是,Writer
裝備?硬盤,FileWriter
FileWriter fw = new FileWriter("a.txt");
明確4:是不是需要額外功能?
1,需要高效嗎?BufferedInputStream BuffedOutputStream
2,需要字節和字符之間的橋梁嗎?轉換流。InputStreamReader OutputStreamWriter
3,需要保證數據輸出時表現情勢嗎?PrintWriter PrintStream
4,需要對對象進行序列化和反序列化嗎?ObjectInputStream ObjectOutputStream
5,需要操作基本數據類型值嗎?DataInputStream DataOutputStream
6,需要進行數據的合并嗎?SequenceInputStream
進階圖:||
上一篇 實時(RT)操作系統的起源