IO概念
IO可以簡單的理解成INPUT和OUT,代表輸入輸出的意思。輸入就是讀,輸出就是寫。
IO可以讀寫硬盤、光盤、內(nèi)存、鍵盤、網(wǎng)絡(luò)等資源上的數(shù)據(jù)。
流
IO中的流就相當(dāng)于現(xiàn)實生活中的水流一樣,一打開自來水的龍頭開關(guān),水就從一頭流向另一頭??梢岳斫獬擅總€按順序排列的水滴就是需要傳輸?shù)淖止?jié)。把有序數(shù)據(jù)理解成流,流負(fù)責(zé)傳輸數(shù)據(jù),以便于輸入輸出。數(shù)據(jù)是流動的,是有方向的流動。
鐵西網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),鐵西網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為鐵西千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的鐵西做網(wǎng)站的公司定做!
數(shù)據(jù)的內(nèi)部表示便于程序進(jìn)行數(shù)據(jù)處理。典型的內(nèi)部表示有:整型數(shù)的二進(jì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)隱藏在對流數(shù)據(jù)的解釋中。
流的分類
按數(shù)據(jù)的走向可以分為:輸入流,輸出流。
按數(shù)據(jù)的單位可以分為:字節(jié)流、字符流。
按裝飾模式可以分為:節(jié)點流(底層)、處理流(上層)。
輸入流與輸出流
輸入流:只能從中讀取數(shù)據(jù),而不能向其寫入數(shù)據(jù)。一般用于將數(shù)據(jù)從網(wǎng)絡(luò)、硬盤讀取到內(nèi)存中。
輸出流:只能向其寫入數(shù)據(jù),而不能從中讀取數(shù)據(jù)。一般用于將數(shù)據(jù)從內(nèi)存中寫入到網(wǎng)絡(luò)、硬盤。
輸入流主要由InputStream和Reader作為父類。
輸出流主要由OutputStream和Writer作為父類。
他們都是抽象的,因此無法直接創(chuàng)建對象。
字節(jié)流與字符流
字節(jié)流與字符流的用法幾乎完全一樣,區(qū)別在于所操作的單位不同,字節(jié)流操作8位的字節(jié),
而字符流操作16位的字符。
字節(jié)流主要由InputStream和OutputStream作為父類。
字符流主要由Reader和Writer作為父類。
節(jié)點流與處理流
節(jié)點流(上層):
向特定的節(jié)點寫入&讀取數(shù)據(jù)的流。程序連接到實際的數(shù)據(jù)源,和實際的輸入輸出節(jié)點連接。
處理流(底層):
對一個已存在的流進(jìn)行連接或封裝,通過封裝后的流來實現(xiàn)數(shù)據(jù)讀寫功能。
使用處理流進(jìn)行輸入輸出時,程序不會和實際的輸入輸出節(jié)點連接,對底層的處理流做了一層封裝。
程序可以采用相同的輸入輸出代碼來訪問不同的數(shù)據(jù)源。(涉及到裝飾器模式)
處理流使得java程序無需理會輸入輸出的節(jié)點是磁盤、網(wǎng)絡(luò)還是其他,
只要將這些節(jié)點流包裝成處理流,
就可以使用相同的輸入輸出代碼來讀寫不同的輸入輸出設(shè)備的數(shù)據(jù)。
節(jié)點流用于和底層的物理存儲節(jié)點直接關(guān)聯(lián),不同的物理節(jié)點獲取節(jié)點流的方式可能存在差異。
程序可以把不同的物理節(jié)點流包裝成統(tǒng)一的處理流,
允許程序使用統(tǒng)一的輸入輸出代碼來讀寫不同的物理存儲節(jié)點資源。
常用的輸入輸出流體系
io流按功能分成許多類,每個功能又提供字節(jié)流和字符流,
字節(jié)流與字符流又分別提供了輸入流與輸出流。如果輸入輸出的是文本內(nèi)容可以使用字符流,如果輸入輸出的是二進(jìn)制內(nèi)容,可以使用字節(jié)流。
字節(jié)流
字節(jié)流是IO最原始的方式,因為計算機處理數(shù)據(jù)總是以一個byte為基本單位的,字節(jié)流就是每次讀取的單位為byte。字節(jié)流是所有流的基礎(chǔ),也是其他高級流的前提。字節(jié)流可以處理所有類型的數(shù)據(jù),包括:音樂、圖片、文字、視頻、各種文件等等。多數(shù)以"Stream"結(jié)尾的類都是字節(jié)流。
字符流
字符流只能處理文本,讀寫的單位是字符。多數(shù)以"Writer"與"Reader"結(jié)尾的類都是字節(jié)流。
名稱欄目:java中的IO流
鏈接分享:http://jinyejixie.com/article32/jopdsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、企業(yè)建站、動態(tài)網(wǎng)站、域名注冊、App開發(fā)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)