BufferedInputStream是带缓冲区的输入流,默认缓冲区大小是8M,能够减少访问磁盘的次数,提高文件读取性能;BufferedOutputStream是带缓冲区的输出流,能够提高文件的写入效率。BufferedInputStream与BufferedOutputStream分别是FilterInputStream类和FilterOutputStream类的子类,实现了装饰设计模式。
例1:
package day01;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 缓冲流写出数据的注意事项
*
*/
public class BOSDemo {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream(“bos.txt”);
BufferedOutputStream bos= new BufferedOutputStream(fos );
String str = “随便写点什么吧”;
byte[] data = str.getBytes();
bos.write(data);
/*
* 将缓冲区中的数据强制性写出。
*/
bos.flush();
bos.close();
}
}
例2:使用BufferedInputStream和BufferedOutputStream完成MP3的复制:
package day01;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 使用缓冲流提高读写效率
* @author Administrator
*
*/
public class CopyDemo4 {
public static void main(String[] args) throws IOException {
FileInputStream src=new FileInputStream("草原歌曲 - 我要去西藏.mp3");
BufferedInputStream bis=new BufferedInputStream(src);//使用缓冲输入流提高读取效率
FileOutputStream fos=new FileOutputStream("草原歌曲 - 我要去西藏aa.mp3");
BufferedOutputStream bos=new BufferedOutputStream(fos);//使用缓冲输出流提高写出效率
int d=-1;
while((d=bis.read())!=-1){
bos.write(d);//读写时就基于缓冲流
}
System.out.println("复制完毕");
bos.close();
bis.close();
}
}