代码示例
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();
}
}
}
搭配优势
- 提高读取效率:
FileInputStream
是直接从文件读取数据的节点流,每次读取操作都会与文件系统交互,开销较大。而 BufferedInputStream
内部有一个缓冲区,它会一次性从 FileInputStream
读取较多的数据到缓冲区中。后续的读取操作优先从缓冲区获取数据,只有当缓冲区数据读完时,才会再次从 FileInputStream
读取数据填充缓冲区。这样减少了与文件系统的交互次数,大大提高了读取效率。
- 增强功能:
BufferedInputStream
提供了一些额外的功能,如 mark
和 reset
方法,可以标记输入流中的某个位置,并在需要时重置到该标记位置,这在某些复杂的读取场景中非常有用,而 FileInputStream
本身并不具备这些功能。