一、使用BufferedInputSream的步骤
- 找到目标文件
- 建立数据的输入管道
- 建立缓冲输入字节流
- 关闭资源
二、BufferedInputSream 出现的目的是为了提高读取文件的效率,但是BufferedInputStream的read的方法每次读取一个字节数据,而FileInputStream每次也是读取一个字节的数据,那么BufferedInputStream效率从何而来?
BufferedInputStream:是从内存中的缓冲数组读取的。FileInputStream:是从硬盘中直接读取字节的。从内存读取的速度大于从硬盘读取的速度,所以BufferedInputStream效率更快。
三、为什么创建BufferedInputStream的时候需要传递FileInputStream?
BufferedInputStream 本身是不具备读文件的能力,所以需要借助FileInputStream
四、BufferedInputSream.close()
BufferedInputSream.close() 实际上关闭的是FileInputStream()
五、代码分析:
public static void readTest() throws IOException{ File file=new File("E:\\a.txt"); FileInputStream fileInputStream =new FileInputStream(file); BufferedInputStream bufferedInputStream=new BufferedInputStream(fileInputStream); int length=0; while((length=bufferedInputStream.read())!=-1){ System.out.println((char)length); } bufferedInputStream.close(); }
总之:BufferedInputSream 缓冲输入字节流 缓冲流入字节流的出现主要是为了提高读文件的效率,其实该类内部只不过维护了一个8kb的字节数组。
所以我们也可以使用FileInputStream,自己创建一个数组。