Java I/O

來源:互聯網
上載者:User

標籤:

簡介:java通過輸入和輸出資料流來進行資料轉送,這裡的“流”,應該說是“流處理器”更為恰當,它是一個類,封裝了對資料的操作細節。使得我們可以方便的進行資料轉送。在這裡有個“流源”和“流匯”的概念。資料就是從“流源”傳至“流匯”,對於輸入資料流,“流源”可以是磁碟,網路,記憶體等等,“流匯”是我們的程式。對於輸出資料流,“流源”是我們的程式,“流匯”是磁碟,網路,記憶體等等。java的InputStream和OutputStream對應,byte和char對應。byte類型的資料是InputStream和OutputStream操作的資料。char類型的資料是Reader和Writer操作的資料(Reader和Writer是為了支援國際化),應當儘可能去用Reader和Writer當這兩個流處理器不能滿足需求時才用InputStream和OutputStream(例如視頻檔案的處理)。UML類圖:

 

說明:對於InputStream還有幾個不怎麼能用到,或已經不推薦使用的流我沒有放到圖片中,除此,InputStream和OutputStream幾乎完全對應,OutputStream中多了個PrintStream用于格式化列印。

因為這裡完美對應,所以我只解釋輸入資料流和PrintWriter,最後會展示它們的使用代碼。

(1)ByteArrayInputStream可以用於多線程的通訊來提供緩衝功能(這裡說緩衝是指它會維護一個記憶體中的Byte數組),所以它的"流源"就是記憶體中的數組,"流匯"當然是應用程式。

(2)FileInputStream建立一個與檔案有關的輸入資料流,用來讀取檔案資料。它的“流源”是硬碟上的一個檔案,建立時通過File對象或者表示檔案位置的URL來指明“流源”的位置。“流匯”是應用程式。

(3)PipedInputStream與PipedOutputStream配合使用,用於讀入資料管道的資料。“流源”的物理位置依然是記憶體,通過PipedOutputStream來指明。“流匯”應用程式。

(4)ObjectInputStream將ObjectOutputStream序列化的資料並行化,並行化就是將位元據轉化為Object類型資料,序列化就是將Object類型的資料轉化為位元據。“流源”可以是記憶體,可以是網路,“流匯”是應用程式。

(5)FilterInputStream比較特殊,它的角色是設計模式中裝飾模式中的裝飾者,不熟悉設計模式的可以去看設計模式。它是一個抽象類別,不能直接建立對象。它規範了實現它的子類(即BufferedInputStream和DataInputStream)如何對前面四種的流進行裝飾,這裡很重要的一點是FilterInputStream會強制子類調用被裝飾對象的特定方法。這裡的裝飾,就是在加強被裝飾對象的功能,也就是前四種流對象的功能。

(6)DataInputStream繼承了FilterInputStream就是一個具體的裝飾類,建立它時需要傳入前四種流類型的對象,或者另外一個繼承了FilterInputStream的BufferedInputStream可以將由前集中流擷取的資料解釋為java的八種基本類型的資料,例如int,char等。

(7)BufferedInputStream會在記憶體中建立一個緩衝區(所謂的緩衝區就是程式申請分配的一段記憶體位址,例如建立了一個數組,這個數組就可以充當一個記憶體緩衝區)將由前四種對象讀取的資料進行緩衝。

//臨時有事,後面的內容將於晚上補全

 

Java I/O

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.