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