java中的IO流

IO概念
IO可以簡(jiǎn)單的理解成INPUT和OUT,代表輸入輸出的意思。輸入就是讀,輸出就是寫(xiě)。
IO可以讀寫(xiě)硬盤(pán)、光盤(pán)、內(nèi)存、鍵盤(pán)、網(wǎng)絡(luò)等資源上的數(shù)據(jù)。

IO中的流就相當(dāng)于現(xiàn)實(shí)生活中的水流一樣,一打開(kāi)自來(lái)水的龍頭開(kāi)關(guān),水就從一頭流向另一頭??梢岳斫獬擅總€(gè)按順序排列的水滴就是需要傳輸?shù)淖止?jié)。把有序數(shù)據(jù)理解成流,流負(fù)責(zé)傳輸數(shù)據(jù),以便于輸入輸出。數(shù)據(jù)是流動(dòng)的,是有方向的流動(dòng)。

鐵西網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),鐵西網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為鐵西千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的鐵西做網(wǎng)站的公司定做!

數(shù)據(jù)的內(nèi)部表示便于程序進(jìn)行數(shù)據(jù)處理。典型的內(nèi)部表示有:整型數(shù)的二進(jìn)制表示、浮點(diǎn)數(shù)的IEEE表示、字符的ASCII或Unicode編碼表示。數(shù)據(jù)的外部表示則根據(jù)不同的外部設(shè)備的需要,有具體不同的表現(xiàn)形式。如果外部數(shù)據(jù)表示是可讀的字符序列,則稱為文本IO,否則為二進(jìn)制IO。標(biāo)準(zhǔn)IO流的主要目的是支持文本IO,不直接支持二進(jìn)制IO。

雖然IO流是以流的方式進(jìn)行數(shù)據(jù)傳遞,但這并不表明傳遞的數(shù)據(jù)不能有任何結(jié)構(gòu),而是指IO流的概念是以流的方式進(jìn)行輸入輸出,所傳遞數(shù)據(jù)的內(nèi)部結(jié)構(gòu)隱藏在對(duì)流數(shù)據(jù)的解釋中。

流的分類
按數(shù)據(jù)的走向可以分為:輸入流,輸出流。
按數(shù)據(jù)的單位可以分為:字節(jié)流、字符流。
按裝飾模式可以分為:節(jié)點(diǎn)流(底層)、處理流(上層)。
輸入流與輸出流
輸入流:只能從中讀取數(shù)據(jù),而不能向其寫(xiě)入數(shù)據(jù)。一般用于將數(shù)據(jù)從網(wǎng)絡(luò)、硬盤(pán)讀取到內(nèi)存中。
輸出流:只能向其寫(xiě)入數(shù)據(jù),而不能從中讀取數(shù)據(jù)。一般用于將數(shù)據(jù)從內(nèi)存中寫(xiě)入到網(wǎng)絡(luò)、硬盤(pán)。
輸入流主要由InputStream和Reader作為父類。
輸出流主要由OutputStream和Writer作為父類。
他們都是抽象的,因此無(wú)法直接創(chuàng)建對(duì)象。
字節(jié)流與字符流
字節(jié)流與字符流的用法幾乎完全一樣,區(qū)別在于所操作的單位不同,字節(jié)流操作8位的字節(jié),
而字符流操作16位的字符。
字節(jié)流主要由InputStream和OutputStream作為父類。
字符流主要由Reader和Writer作為父類。
節(jié)點(diǎn)流與處理流
節(jié)點(diǎn)流(上層):
向特定的節(jié)點(diǎn)寫(xiě)入&讀取數(shù)據(jù)的流。程序連接到實(shí)際的數(shù)據(jù)源,和實(shí)際的輸入輸出節(jié)點(diǎn)連接。
處理流(底層):
對(duì)一個(gè)已存在的流進(jìn)行連接或封裝,通過(guò)封裝后的流來(lái)實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)功能。
使用處理流進(jìn)行輸入輸出時(shí),程序不會(huì)和實(shí)際的輸入輸出節(jié)點(diǎn)連接,對(duì)底層的處理流做了一層封裝。
程序可以采用相同的輸入輸出代碼來(lái)訪問(wèn)不同的數(shù)據(jù)源。(涉及到裝飾器模式)
處理流使得java程序無(wú)需理會(huì)輸入輸出的節(jié)點(diǎn)是磁盤(pán)、網(wǎng)絡(luò)還是其他,
只要將這些節(jié)點(diǎn)流包裝成處理流,
就可以使用相同的輸入輸出代碼來(lái)讀寫(xiě)不同的輸入輸出設(shè)備的數(shù)據(jù)。
節(jié)點(diǎn)流用于和底層的物理存儲(chǔ)節(jié)點(diǎn)直接關(guān)聯(lián),不同的物理節(jié)點(diǎn)獲取節(jié)點(diǎn)流的方式可能存在差異。
程序可以把不同的物理節(jié)點(diǎn)流包裝成統(tǒng)一的處理流,
允許程序使用統(tǒng)一的輸入輸出代碼來(lái)讀寫(xiě)不同的物理存儲(chǔ)節(jié)點(diǎn)資源。
常用的輸入輸出流體系
io流按功能分成許多類,每個(gè)功能又提供字節(jié)流和字符流,
字節(jié)流與字符流又分別提供了輸入流與輸出流。如果輸入輸出的是文本內(nèi)容可以使用字符流,如果輸入輸出的是二進(jìn)制內(nèi)容,可以使用字節(jié)流。
字節(jié)流
字節(jié)流是IO最原始的方式,因?yàn)橛?jì)算機(jī)處理數(shù)據(jù)總是以一個(gè)byte為基本單位的,字節(jié)流就是每次讀取的單位為byte。字節(jié)流是所有流的基礎(chǔ),也是其他高級(jí)流的前提。字節(jié)流可以處理所有類型的數(shù)據(jù),包括:音樂(lè)、圖片、文字、視頻、各種文件等等。多數(shù)以"Stream"結(jié)尾的類都是字節(jié)流。
字符流
字符流只能處理文本,讀寫(xiě)的單位是字符。多數(shù)以"Writer"與"Reader"結(jié)尾的類都是字節(jié)流。

名稱欄目:java中的IO流
鏈接分享:http://muchs.cn/article32/jopdsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、企業(yè)建站動(dòng)態(tài)網(wǎng)站、域名注冊(cè)、App開(kāi)發(fā)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)