java流的概念
剛開(kāi)始接觸流的概念,很迷惑,搞了很久終于搞懂,時(shí)隔許久,又迷惑了,現(xiàn)做一小結(jié),拿來(lái)與大家分享,亦作為我Blog的首篇。
1. Java的流分為 Inputstream 和 OutputStream;
2. 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一條不間斷的字節(jié)流,用來(lái)實(shí)現(xiàn)程序或進(jìn)程間的通信,或讀寫(xiě)外圍設(shè)備、外部文件等;
3. Java中,流,簡(jiǎn)單的說(shuō)就是字節(jié)(byte),可以把它看作是很多很多字節(jié)(byte) 匯在一起形成的東西,起個(gè)名字就叫流,像水滴形成河流一樣,呵呵,個(gè)人的解釋?zhuān)?br />
4. 一個(gè)流,必有源端和目的端,也即必須有數(shù)據(jù)(Data)和字節(jié)(byte)兩個(gè)部分,數(shù)據(jù)(Data):可以是計(jì)算機(jī)內(nèi)存的某些區(qū)域,也可以是磁盤(pán)文件,甚至可以是Internet上的某個(gè)URL;字節(jié)就不用說(shuō)了 byte;
5. 流的源端和目的端可簡(jiǎn)單地看成是字節(jié)的生產(chǎn)者和消費(fèi)者,由數(shù)據(jù)變成字節(jié),是生產(chǎn)字節(jié)、生產(chǎn)流;由字節(jié)恢復(fù)成數(shù)據(jù),是讀取字節(jié)、消費(fèi)流;
6. 流的方向很重要,根據(jù)流的方向,流可分為兩類(lèi):輸入流和輸出流。流的方向是最難理解和最容易搞糊涂的,具體如下:
DataOutputStream:
解釋:
是對(duì)象Data(數(shù)據(jù)): out出 字節(jié)stream, 生產(chǎn)出流, 把數(shù)據(jù)(Data)變成字節(jié)(byte), 把數(shù)據(jù)寫(xiě)到內(nèi)存里,
是以程序中的數(shù)據(jù)Data為參照對(duì)象,直接翻譯成英文即為其含義: "(參照物)數(shù)據(jù): 輸出流", 是生成字節(jié),所以是寫(xiě)
*參照物* --> Stream 數(shù)據(jù)轉(zhuǎn)換成生成字節(jié)(byte) Out
源 端 --> 生成流 生產(chǎn)字節(jié)
把數(shù)據(jù) write 成字節(jié)保存到內(nèi)存中
|
DataInputStream:
解釋:
是對(duì)象Data(應(yīng)該是程序): in進(jìn) 字節(jié)stream,變成數(shù)據(jù), 消費(fèi)流, 讀取字節(jié)(byte)轉(zhuǎn)換恢復(fù)成數(shù)據(jù)(Data),
是以程序中的數(shù)據(jù)Data為參照對(duì)象,直接翻譯成英文即為其含義: "(參照物)數(shù)據(jù): 輸入(進(jìn))流", 是讀取字節(jié),所以是讀
(參照物) <-- Stream 讀取字節(jié)(byte)轉(zhuǎn)換成數(shù)據(jù) In
目的端 <-- 讀取流 消費(fèi)字節(jié)
從內(nèi)存中 read 出字節(jié), 轉(zhuǎn)換成數(shù)據(jù)
|
程序代碼待續(xù):