FilterInputStream
FilterInputStream
FilterIn FilterIn eNumberIn
目錄
FilterInputStream及其派生類有兩項重要任務。DataInputStream可以讀取各種primitive及String。(所有的方法都以"read"打頭,比如readByte( ), readFloat( ))。它,以及它的搭檔DataOutputStream,能讓你通過流將primitive數據從一個地方導到另一個地方。其它的類都是用來修改InputStream的內部行為的:是不是做緩衝,是不是知道它所讀取的行信息(允許你讀取行號或設定行號),是不是會彈出單個字元。后兩個看上去更像是給編譯器用的(也就是說,它們大概是為Java編譯器設計的),所以通常情況下,你是不大會用到它們的。不論你用哪種I/O設備,輸入的時候,最好都做緩衝。所以對I/O類庫來說,比較明智的做法還是把不緩衝當特例(或者去直接調用方法),而不是像現在這樣把緩衝當作特例。
FilterInputStream的種類
類 | 功能 | 構造函數的參數 |
用法 | ||
DataInputStream | 與DataOutputStream配合使用,這樣你就能以一種"可攜帶的方式(portable fashion)"從流里讀取primitives了(int,char,long等) | InputStream |
包含了一整套讀取primitive數據的介面。 | ||
BufferedInputStream | 用這個類來解決"每次要用數據的時候都要進行物理讀取"的問題。你的意思是"用緩衝區。" | InputStream,以及可選的緩衝區的容量 |
它本身並不提供介面,只是提供一個緩衝區。需要連到一個"有介面的對象(interface object)"。 | ||
LineNumberInputStream | 跟蹤輸入流的行號;有getLineNumber( )和setLineNumber(int)方法 | InputStream |
只是加一個行號,所以還得連一個"有介面的對象"。 | ||
PushbackInputStream | 有一個"彈壓單位元組"的緩衝區(has a one byte push-back buffer),這樣你就能把最後讀到的那個位元組再壓回去了。 | InputStream |
主要用於編譯器的掃描程序。可能是為支持Java的編譯器而設計的。用的機會不多。 |