MST

星途 面试题库

面试题:Java中节点流与处理流搭配使用基础

请举例说明在Java输入输出流中,如何将FileInputStream(节点流)与BufferedInputStream(处理流)搭配使用来读取文件内容,并简要阐述这样搭配的优势。
14.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

代码示例

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        try (FileInputStream fileInputStream = new FileInputStream("example.txt");
             BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream)) {
            int data;
            while ((data = bufferedInputStream.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

搭配优势

  1. 提高读取效率FileInputStream 是直接从文件读取数据的节点流,每次读取操作都会与文件系统交互,开销较大。而 BufferedInputStream 内部有一个缓冲区,它会一次性从 FileInputStream 读取较多的数据到缓冲区中。后续的读取操作优先从缓冲区获取数据,只有当缓冲区数据读完时,才会再次从 FileInputStream 读取数据填充缓冲区。这样减少了与文件系统的交互次数,大大提高了读取效率。
  2. 增强功能BufferedInputStream 提供了一些额外的功能,如 markreset 方法,可以标记输入流中的某个位置,并在需要时重置到该标记位置,这在某些复杂的读取场景中非常有用,而 FileInputStream 本身并不具备这些功能。