BufferedInputStream流的内部缓冲区是字节数组
java.io.BufferedInputStream extends InputStream
BufferedInputStream:字节缓冲输入流
继承自父类的成员方法:
abstract int | read() | 从输入流读取数据的下一个字节。 |
---|---|---|
int | read(byte[] b) | 从输入流中读取一些字节数,并将它们存储到缓冲器阵列 |
void | close() | 关闭此输入流并释放与流相关联的任何系统资源。 |
---|
BufferedInputStream流的构造方法
Constructor | 描述 |
---|---|
BufferedInputStream(InputStream in) | 创建一个 |
BufferedInputStream(InputStream in, int size) | 创建具有指定缓冲区大小的 |
一个使用默认缓冲区大小,一个使用指定缓冲区大小
参数:
InputStream in:传一个InputStream是一个字节输入流,我们可以传递FileInputStream增加一个缓冲区,提高FileInputStream的读取效率
int size:指定缓冲流内部缓冲区的大小,不指定默认
使用步骤:
1、创建FileInputStream对象,构造方法中绑定要读取的数据源
2、创建BufferedInputStream对象,构造方法中传递FileInputStream对象,提高FileInputStream对象的读取效率
3、使用BufferedInputStream对象中的方法read,读取文件
4、释放资源(资源释放只要关闭缓冲流就可以了,不需要关闭基本的字节流,因为一旦关闭缓冲流,就会自动关闭基本的字节流)
一次读一个read()方法
package com.baidu.Buffered;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class 字节缓冲输入流01 {
public static void main(String[] args) throws IOException {
FileInputStream fis= new FileInputStream("F:\\develop\\b.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
//使用BufferedInputStream读取数据的下一个字节
int len = 0;
while ((len = bis.read())!=-1){
System.out.println(len);
}
bis.close();
}
}
239
187
191
97
98
99
239 187 191是一串神秘数字,97--->a 98----->b 99------>c
数组缓冲read(byte[] b)方法读取
提高效率
package com.baidu.Buffered;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class 字节缓冲输入流01 {
public static void main(String[] args) throws IOException {
FileInputStream fis= new FileInputStream("F:\\develop\\b.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] bytes = new byte[1024];//存储每次读取的数据
int len = 0;//记录每次读取的有效字节个数
while ((len = bis.read(bytes))!=-1){
System.out.println(new String(bytes,0,len));
}
bis.close();
}
}
输出: