Java IO流-BufferedInputStream和BufferedOutputStream
带缓冲的输入和输出流;
这里缓冲的概念,就是在A,B之间建立内存缓冲区,读取得快,就先放缓冲区,然后再从缓冲区写入指定目标,和没有缓冲比,效率快很多。
我们给个实例比对下:
package com.java1234.chap10.sec03; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; public class Demo6 { /** * 缓冲 * @throws Exception */ public static void bufferStream()throws Exception{ // 定义了一个带缓冲的字节输入流 BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream("C://《一头扎进J2SE》V2.0视频笔录2.doc")); // 定义了一个带缓冲的字节输出流 BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("C://复制的《一头扎进J2SE》V2.0视频笔录2.doc")); int b=0; long startTime=System.currentTimeMillis(); // 开始时间 while((b=bufferedInputStream.read())!=-1){ bufferedOutputStream.write(b); } bufferedInputStream.close(); bufferedOutputStream.close(); long endTime=System.currentTimeMillis(); // 结束时间 System.out.println("缓冲花费的时间是:"+(endTime-startTime)); } /** * 非缓冲 * @throws Exception */ public static void stream() throws Exception{ InputStream inputStream=new FileInputStream("C://《一头扎进J2SE》V2.0视频笔录.doc"); // 定义一个输入流 OutputStream outputStream=new FileOutputStream("C://复制的《一头扎进J2SE》V2.0视频笔录.doc"); int b=0; long startTime=System.currentTimeMillis(); // 开始时间 while((b=inputStream.read())!=-1){ outputStream.write(b); } inputStream.close(); outputStream.close(); long endTime=System.currentTimeMillis(); // 结束时间 System.out.println("非缓冲花费的时间是:"+(endTime-startTime)); } public static void main(String[] args)throws Exception { stream(); bufferStream(); } }
把文件从A地址复制到B地址,运行输出:
非缓冲花费的时间是:2368
缓冲花费的时间是:31
我们明显发现 带缓冲的效率高;