Java 基础题目 --关于I/O流的知识点

我是小康小白,一个平平无奇的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类

猜你喜欢

转载自blog.csdn.net/weixin_45791445/article/details/105726998