Java之IO(一)InputStream和OutputStream

來源:互聯網
上載者:User

標籤:text   方法   put   重新整理   網路io   多位元組   抽象方法   isp   input   

  轉載請註明源出處:http://www.cnblogs.com/lighten/p/6964702.html

1.前言

  電腦的IO操作一直都是比較重要的一環,IO顧名思義,就是輸入輸出資料流。不管是磁碟IO還是網路IO,資料流轉就離不開IO,理解Java的IO操作類很重要,本文介紹IO的抽象父類InputStream和OutputStream,這是Java的IO操作基礎,理解完抽象類別,對於其它的IO流也有很大的協助。

  流都實現了Closeable介面,也就是都需要關閉。輸出資料流額外實現了一個Flushable方法,主要是通知立刻將資料刷入指定輸出地。

2.InputStream

  1.read()方法是一個抽象方法,其是資料的讀取源頭,這個方法中要實現讀取資料,返回讀取的值。子類必須實現這個方法。

  2.read(byte[])方法用處是將流的輸入讀入byte[]數組,其實際上調用的是read(byte[], int, int)。

  3.read(byte[], int, int),將流讀入byte[]資料的第off個位置開始,讀取len個位元組。

  上述就是讀入byte數組的全過程,先判斷參數的正確性,再讀取一個位元組,如果是-1則返回-1(流以-1判斷是否結束),然後放入數組的off位置,之後就迴圈讀,三種情況返回:1將所給的資料讀滿了,2讀取-1結束符,3出現讀取異常。最後返回數組所讀的資料個數。

  4.skip(long),跳過指定個位元組不讀。

  上述代碼很清楚,建立了一個跳過的緩衝資料,將流讀到這裡面去,跳過的位元組數有長度限制,為2048個。通過迴圈排除IO異常的感染,直到讀完或者讀滿要跳過的,然後返回實際跳過的數量。

  5.available(),返回估測的可讀的數量,父類是直接返回了0。這個方法是對於所有流實現來說不都是準確的,所以慎用。這個方法需要被子類覆寫。單次讀或跳過很多位元組不會阻塞,但是可能會讀取或跳過少量位元組。

  6.close(),關閉流,沒有具體實現。會釋放作業系統資源

  7.mark(int),標記讀取位置,如果流實現支援,就可以重設位置,下次讀取則一模一樣。父類方法中什麼都沒做。使用之前要通過markSupported()方法判斷一下是否支援。

  8.reset(),reset到mark方法最後一次調用的位置。父類不止mark,所以直接拋出IO異常。

  9.markSupported(),用於判讀當前流是否支援標記流。與上兩個方法配套使用。

3.OutputStream

  1.write(int),抽象方法,通常是寫入一個byte,低8位將寫入,高24位會被忽略。將指定位元組寫入輸出地,子類必須實現。

  2.write(byte[]),實際上調用的就是方法3:write(b, 0, b.length);

  3.write(byte b[], int off, int len),將位元組數組b的其實位置off開始,寫入len長度的位元組

  很簡單的數組邊界判定,通過迴圈調用write(int)方法。

  4.flush(),強制重新整理方法,將write寫出的位元組(此時不一定到了目的地如磁碟,可能在緩衝中),調用flush方法讓已寫緩衝位元組強制到目的地。父類方法沒有具體實現。但是此方法並不保證正在到了目的地,比如磁碟,檔案流,這個方法只保證之前寫入的資料到了作業系統的write方法,不保證作業系統完成了寫這個步驟。

  5.close(),關閉輸出資料流。流關閉之後不能在輸出位元組,也不能再次開啟。父方法是抽象方法。

 

 

  

Java之IO(一)InputStream和OutputStream

聯繫我們

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