InputStream與OutputStream 類(lèi):
流按照功能分為:輸入流(input)----用來(lái)讀取數(shù)據(jù);輸出流(output)----用來(lái)寫(xiě)出數(shù)據(jù)
流分類(lèi)為:節(jié)點(diǎn)流和處理流
節(jié)點(diǎn)流:節(jié)點(diǎn)流又稱(chēng)為低級(jí)流,是真實(shí)負(fù)責(zé)讀寫(xiě)的流,是連接程序與數(shù)據(jù)源的"管道",負(fù)責(zé)將數(shù)據(jù)搬運(yùn)。讀寫(xiě)一定是基于低級(jí)流完成的。
? ? 特點(diǎn):數(shù)據(jù)源明確(知道數(shù)據(jù)從哪里來(lái),或者數(shù)據(jù)寫(xiě)到哪里去)
處理流:處理流不能獨(dú)立存在,必須基于另一個(gè)流進(jìn)行讀或?qū)?,目的是通過(guò)處理流提供的讀寫(xiě)功能簡(jiǎn)化我們對(duì)實(shí)際讀寫(xiě)數(shù)據(jù)的操作。
文件流:用來(lái)讀寫(xiě)文件數(shù)據(jù)的流,文件流是一對(duì)低級(jí)流論功能與RandomAccessFile一致,都是用來(lái)讀寫(xiě)文件數(shù)據(jù)的流,但是區(qū)別在于實(shí)際底層的讀寫(xiě)實(shí)現(xiàn)方式不同,RAF是基于指針進(jìn)行讀寫(xiě)的。文件流是基于流式讀寫(xiě)的。


輸入輸出流復(fù)制文件:

緩沖流: BufferedInputStream----緩沖輸入流,提高讀取效率 BufferedOutputStream----緩沖輸出流,提高寫(xiě)出效率

緩沖輸出流寫(xiě)出數(shù)據(jù)的緩沖區(qū)問(wèn)題:

對(duì)象流:對(duì)象流是一對(duì)高級(jí)流,作用是方便讀寫(xiě)java中的對(duì)象。
為方便測(cè)試,創(chuàng)建一個(gè)Person類(lèi):

java.io.ObjectOutputStream
對(duì)象輸出流,可以將給定的對(duì)象轉(zhuǎn)換為一組字節(jié),然后通過(guò)其處理的流將這組字節(jié)寫(xiě)出
將一個(gè)對(duì)象通過(guò)對(duì)象列轉(zhuǎn)換為字節(jié)后并寫(xiě)入文件的操作涉及兩個(gè)專(zhuān)業(yè)名詞:
1)對(duì)象序列化----對(duì)象序列化就是將一個(gè)java中的對(duì)象按照其結(jié)構(gòu)轉(zhuǎn)化為一組字節(jié)的過(guò)程(對(duì)象輸出流完成)
2)持久化----將一組字節(jié)寫(xiě)入文件(硬盤(pán)上)的過(guò)程成為持久化

java.io.ObjectInputStream
對(duì)象輸入流,用于反序列化對(duì)象
