第58章测试:Java字节流

测试你对InputStream、OutputStream及其子类的掌握程度

10 题目数量
15 预计时间(分钟)
70 及格分数
1
以下哪个类是所有字节输入流的抽象基类?
单选题

解析

正确答案:B

InputStream是所有字节输入流的抽象基类,它定义了读取字节数据的基本方法。Reader是字符流的基类,FileInputStream和BufferedInputStream都是InputStream的具体实现类。

2
使用FileInputStream读取文件时,以下哪种做法是最佳实践?
单选题

解析

正确答案:B

使用try-with-resources语句是最佳实践,它可以自动管理资源,确保流在使用完毕后被正确关闭,即使发生异常也能保证资源释放。

3
BufferedInputStream相比FileInputStream的主要优势是什么?
单选题

解析

正确答案:C

BufferedInputStream通过内置缓冲区来减少对底层输入流的系统调用次数,从而显著提高I/O操作的性能,特别是在处理大文件时效果明显。

4
以下代码的作用是什么?
单选题
DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.dat")); dos.writeInt(123); dos.writeDouble(3.14); dos.writeUTF("Hello");

解析

正确答案:B

DataOutputStream可以将Java基本数据类型(如int、double)和字符串按照二进制格式写入文件,保持数据类型的完整性。这些数据可以用DataInputStream按相同顺序读取。

5
ByteArrayOutputStream的主要特点是什么?
单选题

解析

正确答案:B

ByteArrayOutputStream在内存中操作,将数据写入到内部的字节数组中,不涉及磁盘I/O操作。它支持动态扩容,速度快,适合临时数据处理和数据转换。

6
以下哪种情况最适合使用字节流而不是字符流?
单选题

解析

正确答案:B

字节流适合处理二进制数据,如图片、音频、视频等文件。字符流适合处理文本数据,如文本文件、配置文件、XML文件等。

7
在使用DataInputStream读取数据时,需要注意什么?
单选题

解析

正确答案:B

使用DataInputStream读取数据时,必须按照DataOutputStream写入数据的顺序来读取,因为数据是按二进制格式顺序存储的,读取顺序错误会导致数据解析错误。

8
以下代码中,哪一行可能会抛出IOException?
单选题
1. FileInputStream fis = new FileInputStream("test.txt"); 2. int data = fis.read(); 3. System.out.println(data); 4. fis.close();

解析

正确答案:C

第1行创建FileInputStream时如果文件不存在会抛出FileNotFoundException(IOException的子类);第2行读取数据时可能因为I/O错误抛出IOException;第4行关闭流时也可能抛出IOException。第3行只是打印数据,不会抛出IOException。

9
对于大文件复制操作,以下哪种方法效率最高?
单选题

解析

正确答案:B

对于大文件复制,使用BufferedInputStream配合字节数组缓冲区效率最高。缓冲流减少了系统调用次数,字节数组缓冲区进一步提高了批量读写的效率。逐字节复制效率最低。

10
ByteArrayInputStream的reset()方法的作用是什么?
单选题

解析

正确答案:B

ByteArrayInputStream的reset()方法将读取位置重置到流的开始位置(或之前mark()标记的位置),这样可以重新读取数据,而不需要重新创建流对象。

🎉 测试完成!

0%
0 答对题数
0 答错题数
0% 得分率

继续努力,加油!