面试题答案
一键面试BufferedInputStream提升性能原理
BufferedInputStream内部维护了一个缓冲区(字节数组)。在读取数据时,它不是每次都直接从底层输入流(如文件流)读取一个字节,而是一次性从底层输入流读取较大的数据块到缓冲区中。后续的读取操作首先从缓冲区获取数据,只有当缓冲区的数据读完后,才会再次从底层输入流填充缓冲区。这样减少了与底层物理设备(如磁盘)的交互次数,因为磁盘I/O操作相对内存操作来说非常耗时,从而大大提升了性能。
示例代码
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BufferedInputStreamPerformanceTest {
public static void main(String[] args) {
String filePath = "test.txt";
long startTime = System.currentTimeMillis();
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath))) {
int data;
while ((data = bis.read()) != -1) {
// 这里可以对读取的数据进行处理,例如打印
// System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("BufferedInputStream读取文件耗时: " + (endTime - startTime) + " 毫秒");
}
}