FilterInputStream-001

来源:互联网 发布:功夫梦 知乎 编辑:程序博客网 时间:2024/04/29 17:44

          FilterInputStream及其派生类有两项重要任务。DataInputStream可以读取各种primitive及String。(所有的方法都以"read"打头,比如readByte( ), readFloat( ))。它,以及它的搭档DataOutputStream,能让你通过流将primitive数据从一个地方导到另一个地方。 其它的类都是用来修改InputStream的内部行为的:是不是做缓冲,是不是知道它所读取的行信息(允许你读取行号或设定行号),是不是会弹出单个字符。后两个看上去更像是给编译器用的(也就是说,它们大概是为Java编译器设计的),所以通常情况下,你是不大会用到它们的。 不论你用哪种I/O设备,输入的时候,最好都做缓冲。所以对I/O类库来说,比较明智的做法还是把不缓冲当特例(或者去直接调用方法),而不是像现在这样把缓冲当作特例。

 

构造函数的参数功能用法DataInputStreamInputStream与DataOutputStream配合使用,这样你就能以一种"可携带的方式(portable fashion)"从流里读取primitives了(int,char,long等)包含了一整套读取primitive数据的接口。BufferedInputStreamInputStream,以及可选的缓冲区的容量用这个类来解决"每次要用数据的时候都要进行物理读取"的问题。你的意思是"用缓冲区。"它本身并不提供接口,只是提供一个缓冲区。需要连到一个"有接口的对象(interface object)"。LineNumberInputStreamInputStream跟踪输入流的行号;有getLineNumber( )和setLineNumber(int)方法只是加一个行号,所以还得连一个"有接口的对象"。PushbackInputStreamInputStream有一个"弹压单字节"的缓冲区(has a one byte push-back buffer),这样你就能把最后读到的那个字节再压回去了。主要用于编译器的扫描程序。可能是为支持Java的编译器而设计的。用的机会不多。