我是小康小白,一个平平无奇的Java小白。热爱有趣的文字,生活和远方。
1. 对纯文本文件操作用什么I/O流的类?( B )
A. RandomAccessFile
B. FileReader
C. FileOutputStream
D. FileInputStream
解析:
FileOutputSteam,FileInputStream是文件字节输出,输出流。
FileReader是对纯文本文件进行读取。
RandomAccessFile在这里就不多做介绍,用的并不多,感兴趣的可以自行百度。
2. 把 FileReader 类的对象和 BufferedReader 类的对象结合起来使用,可以从纯文本文件中按行来读取内容,这种设计模式是( A )。
A.装饰模式
B. 适配器模式
C.代理模式
D.工厂模式
解析:这种模式叫装饰模式,具体实战见下面的博文链接。
3.凡是从内存流向外部设备的数据流称为(D)。
A.文件流
B.输入流
C. 字符流
D. 输出流
解析:
从内存流向外部设备的数据流称为输出流,同理,从外部设备流向内存的数据流被称为输入流;
而输入流和输出流根据流中所储存的内容分为字节流和字符流。字节流指流中为字节,字节流又被称为二进制流。
字符流指流中为字符,字符数组或者字符串。
两者的区别:
1)字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。
2)字节流默认不使用缓冲区;字符流使用缓冲区。
3)字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它
支持 写入及读取Unicode码元。
4)底层设备永远只接受字节数据,有时候要写字符串到底层设备,需要将字符串转成字节再进行写入。字符流是字节流的包装,字符流则是直接接
受字符串,它内部将串转成字节,再写入底层设备,这为我们向IO设别写入或读取字符串提供了一点点方便。
4.下列不属于FileInputStream输入流的 read() 方法的是( C )
A. int read(byte b[]);
B.int read(byte b[],int offset,int len);
C. int read(int line);
D.int read();
解析:
FileInputStream: 它用于读取本地文件中的字节数据,继承自InputStream类,由于所有的文件都是以字节为向导,因此它适用于操作
于任何形式的文件。
FileInputStream输入流中的read()方法一共有三种(还有一个readBytes):
1. read()
* 从读取流读取的是一个一个字节
* 返回的是字节的(0-255)内的字节值
*.读一个下次就自动到下一个,如果碰到-1说明没有值了.
2.read(byte b[])
* 从读取流读取一定数量的字节,如果比如文件总共是102个字节
* 我们定义的数组长度是10,那么默认前面10次都是读取10个长度
* 最后一次不够十个,那么读取的是2个
* 这十一次,每次都是放入10个长度的数组.
3.read(byte b[], int off, int len)
* 从读取流读取一定数量的字节,如果比如文件总共是102个字节
* 我们定义的数组长度是10,但是这里我们写read(bytes,0,9)那么每次往里面添加的(将只会是9个长度),就要读12次,最后一次放入3个.
* 所以一般读取流都不用这个而是用上一个方法:read(byte[]);
4.readBytes(byte b[], int off, int len)
如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象( B )
A.FileOutputStream
B.FileInputStream
C.FileWriter
D.DataOutputStream
解析:
这个题的意思很直接,很好判断。D是对数据输出流允许应用程序以与机器无关方式将Java基本数据类型写到底层输出流。A是文件输出流。其中C是按字符向流中写入数据。而B是按字节向流中写入数据。
相关链接;Java FileWriter类