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)流又稱為低級(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è)專業(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ì)象