BufferedInputStream和BufferedInputStream

3/8/2017来源:ASP.NET技巧人气:2041

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(); } }