java io流是既可以從中讀取,也可以寫入到其中的資料流。正如這個系列教程之前提到過的,流通常會與資料源、資料流向目的地相關聯,比如檔案、網絡等等。
java.io.inputstream類是所有java io輸入流的基類。如果你正在開發一個從流中讀取資料的元件,請嘗試用inputstream替代任何它的子類(比如fileinputstream)進行開發。這麼做能夠讓你的代碼相容任何類型而非某種确定類型的輸入流。
然而僅僅依靠inputstream并不總是可行。如果你需要将讀過的資料推回到流中,你必須使用pushbackinputstream,這意味着你的流變量隻能是這個類型,否則在代碼中就不能調用pushbackinputstream的unread()方法。
通常使用輸入流中的read()方法讀取資料。read()方法傳回一個整數,代表了讀取到的位元組的内容(譯者注:0 ~ 255)。當達到流末尾沒有更多資料可以讀取的時候,read()方法傳回-1。
這是一個簡單的示例:
java.io.outputstream是java io中所有輸出流的基類。如果你正在開發一個能夠将資料寫入流中的元件,請嘗試使用outputstream替代它的所有子類。
你可以将流整合起來以便實作更進階的輸入和輸出操作。比如,一次讀取一個位元組是很慢的,是以可以從磁盤中一次讀取一大塊資料,然後從讀到的資料塊中擷取位元組。為了實作緩沖,可以把inputstream包裝到bufferedinputstream中。代碼示例:
緩沖同樣可以應用到outputstream中。你可以實作将大塊資料批量地寫入到磁盤(或者相應的流)中,這個功能由bufferedoutputstream實作。
将不同的流整合到一個鍊中,可以實作更多種進階操作。通過編寫包裝了标準流的類,可以實作你想要的效果和過濾器。