Java IO流

來源:互聯網
上載者:User

標籤:write   技術分享   piped   函數   通過   寫入   重點   建議   height   

首先上在網上找的InputStream和OutputStream的類圖結構

 

下面的是Reader 和Writer 的類圖結構

 

挑重點的講解一下

1.ByteArrayInputStream和ByteArrayOutputStream

顧名思義,位元組輸入資料流和位元組輸出資料流,ByteArrayInputStream( ) 在構造輸入資料流的時候傳進去的是位元組數組,通過read()或者read(byte[] b, int off, int len)方法讀取單個字元,如果讀到結尾返回-1.第二種是一次讀取位元組數組,而不是一個一個的讀.

ByteArrayOutputStream  位元組數組輸出資料流在記憶體中建立一個位元組數組緩衝區,所有發送到輸出資料流的資料儲存在該位元組數組緩衝區中

沒有帶參的建構函式,有兩個方法write(int b)和write(byte[] b, int off, int len)方法, 將位元組數組的參數傳進去,通過ByteArrayOutputStream.write( )方法將位元組數組  輸出到記憶體的位元組數組緩衝區中.

可以通過toByteArray()方法返回位元組數組,writeTo(OutputStream out) 將緩衝區的位元組數組寫進 out 對象中

2.FileInputStream和FileOutputStream

最常用的IO流,FileInputStream(File f),File作為資料來源,通過read() 單個讀取位元組,或者通過read(byte[ ] b)每次讀取一個位元組數組的長度.

FileOutputStream(File f),通過write(byte[ ] b),write(int b)方法將位元組數組或位元組寫入檔案輸出資料流.  這樣可以實現檔案的寫操作.

3.PipedInputStream 和 PipedOutputStream

管道輸入資料流和輸出資料流,主要的作用是實現線程之間的輸入和輸出操作

管道輸入資料流應該串連到管道輸出資料流;管道輸入資料流提供要寫入管道輸出資料流的所有資料位元組。通常,資料由某個線程從 PipedInputStream 對象讀取,並由其他線程將其寫入到相應的 PipedOutputStream。不建議對這兩個對象嘗試使用單個線程,因為這樣可能死結線程。管道輸入資料流包含一個緩衝區,可在緩衝區限定的範圍內將讀操作和寫操作分離開。如果向串連管道輸出資料流提供資料位元組的線程不再存在,則認為該管道已損壞。 

在一個線程中通過PipedOutputStream的write()方法寫進輸入資料流,然後 在另一個線程中使用PipedInputStream.read()方法將輸出資料流的內容讀出來. 

他們之間通過PipedOutputStream的connect(PipedInputStream in)或者PipedInputStream的connect(PipedInputStream  out)方法關聯,實現 線程之間的流的傳輸.

 


 

 

Java IO流

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.