一. 在类的定义上,FileInputStream是读文件的字节内容输入流,直接继承自InputStream,而BufferedInputStream继承自FilterInputStream包装器类,而不是直接继承InputStream,可见BufferedInputStream具有自己独特的功能。
二. 从读取方式上
1. FileInputStream自己有读取功能,读取文件流时直接从原文件存在的硬盘或其他介质中读取
InputStream in = new FileInputStream("C:\\Users\ALL\\test.txt")
2. 而BufferedInputStream自带缓冲区(默认大小为8192),它会将输入流中的数据分批读取至缓冲中,每调用一次read()方法读取时会从缓冲区读取一个字节,当缓冲区中的字节读取完毕,会调用fill()方法一次性对缓冲区进行填充。
缓冲区的数据实际是存储与内存中的,而原始数据可能存在硬盘或其他介质中,建立缓冲区从中读取数据,可以提高效率。
此外,BufferedInputStream作为包装器类得子类,自己并不带有读取功能,在创建对象时需要传入一个能读取内容的InputStream来实现读的功能。
BufferedInputStream buff = new BufferedInputStream(newFileInputStream("C:\\Users\\ALL\\test.txt"))