考查对Java的过滤IO相关类的掌握
问:
FilterOutputStream类是BufferedOutputStream类,DataOutputStream类和PrintStream类的父类,哪个类是FilterOutputStream类构造器的合法参数?
a.InputStream
b.OutputStream
c.File
d.RandomAccessFile
e.StreamTokenizer
解析:
I/O过滤器根据程序的需要来调整数据流,这些过滤器介于一个输入数据流和输出数据流之间,并可以对从输入数据流中传送到输出中的字节进行特殊处理,开发者可以结合过滤器来进行一系列过滤操作。
1.FilterInputStream
这个类是所有输入流过滤器类的父类。这些流位于一个已存在的输入流(基本的输入流)的上层,但是提供了附加功能。
类FilterInputStream简单地覆盖了InputStream的所有方法,使之用于向基本输入流发出各种请求。FilterInputStream的子类可以进一步覆盖这些方法中的某些方法,也可提供额外的方法和域。
以下所示是常见的方法和构造器。
FilterInputStream(InputStream): 在指定的输入流之上,创建一个输入流过滤器。
available():返回从当前输入流中可无阻塞读取的字节数。
close():关闭当前输入流,并释放与它相关的任一系统资源。
mark(int): 在该输入流中标记当前位置。
markSupported(): 测试该输入流是否支持mark和reset方法。
read():从当前输入流中读取数据的下一字节。
read(byte[]):将当前输入流中byte.length字节数据读到一字节数组中。
read(byte[],int,int):将输入流中len字节数据读入一字节数组中。
reset():将该输入流重新定位到上次调用mark方法时标记的位置。
skip(long):跳过并放弃输入流中的n字节数据。
FilterInputStream类含有下列子类:BufferedInputStrearm,CheckedInputStream、DatalnputStream、DigestInputStream、InflaterInputStream、LineNumberIn
putStream,PushbackInputStream
2. FilterOutputStream
这个类是所有过滤器输出流的父类。这些流位于一个现存的输出流(基本的输出流)的上层,但是提供了附加功能。
类FilterOutputStream简单地覆盖了OutputStream的所有方法,使之用于向基本输出流发出各种请求。FilterOutputStream的子类可以进一步覆盖这些方法中的某些,也可提供额外的方法和域。
构造器和常见的方法如下所述。
FilterOutputStream(OutputStream): 创建一个输出流过滤器,建立在指定输入流的上面。
close():关闭当前输出流,且释放与它相关的任一系统资源。
flush():刷新当前输出流,将任何缓冲输出的字节输出到此流中。
write(byte[]): 将b.length字节写入当前输出流。
write(byte[],int,int):将指定byte数组中从off开始的len字节,写到当前输出流。
write(int):将指定的byte写到当前输出流。
FilterOutputStream类有如下子类:BufferedOutputStream,CheckedOutputStream,DataOutputStream,DeflaterOutputStream、DigestOutputStream,PrintStream
3. DataInputStream
数据输入流可以使一个应用程序以与机器无关的方式从基本输入流中读取Java的基本数据类型。应用程序使用一个数据输出流输出数据,以后可使用一个数据输入流读入。
数据输入流和数据输出流以稍加修订的UTF-8格式表示Unicode字符串。该类的主要方法如下所述。
DataInputStream(InputStream): 创建一个新的数据输入流,从指定输入流中读取数据。
read(byte[]):将当前数据输入流中byte.length字节数据读到一字节数组中。
read(byte[],int,int): 将当前数据输入流中len字节数据读入一字节数组中。
readBoolean(): 从当前数据输入流中读取一个boolean值。
readByte():从当前数据输入流中读取一个有符号的8位数。
readChar():从当前数据输入流中读取一个Unicode字符。
readDouble():从当前数据输入流中读取一个double值。
readFloat():从当前数据输入流中读取一个float值。
readFully(byte[]):从当前数据输入流中读取b.length字节到该字节数组。
readFully(byte[],int,int):从当前数据输入流中恰好读取len字节到该字节数组中。
readInt():从当前数据输入流中读取一个有符号的32位整数。
readLine():从当前数据输入流中读取文本的下一行。不推荐使用该方法。
readLong():从当前数据输入流中读取一个有符号的64位整数。
readShort():从当前数据输入流中读取一个有符号的16位数。
readUnsignedByte():从当前数据输入流中读取一个无符号的8位数。
readUnsignedShort():从当前数据输入流中读取一个无符号的16位数。
readUTF():从当前数据输入流中读取一个已用“修订的UTF-8格式”编码的字符串。d
readUTF(Datalnput):从指定的数据输入流中读取一个字符串。
skipBytes(int):准确地跳过基本输入流中的n字节。
4. DataOutputStream
数据输出流可以使一个应用程序以简洁的方式将Java基本数据类型写入到一个输出流。随后某个应用程序能使用一个数据输入流读回这些数据。
该类常见的方法如下所述。
DataOutputStream(OutputStream): 创建一个新的数据输出流,向指定的基本输出流写入数据。
flush(): 刷新当前数据输出流。
size():返回写入当前数据输出流的字节数。
write(byte[],int,int): 将指定的字节数组中从off开始的len字节,写到基本输出流。
write(int): 将指定字节写入基本输出流。
writeBoolean(boolean):将boolean作为一字节值,写入该基本输出流。
writeByte(int):将byte作为一字节值,写入该基本输出流。
writeBytes(String): 将此串作为一字节序列写入该基本输出流。
writeChar(int):将一char作为两字节值,写入该基本输出流,高字节优先。
writeChars(String):将此串作为一个字符序列写入该基本输出流。
writeDouble(double):使用类Double中的doubleToLongBits方法,将给定的双精度浮点数转换为long值,然后将它当作一个8字节数写入该基本输出流,高字节优先。
writeFloa(float):使用类Float中的floatToIntBits方法,将给定的单精度浮点数转换为int值,然后将它当作一个4字节数写入该基本输出流,高字节位优先。
writelnt(int):将一int作为四字节值,写入该基本输出流,高字节优先。
writeLong(long):将一long作为八字节值,写入该基本输出流,高字节优先。
writeShort(int):将short作为两字节值,写入该基本输出流,高字节优先。
writeUTF(String);使用独立于机器的UTF-8编码格式,将个串写入该基木输出流。
答:
b