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
我们明显发现 带缓冲的效率高;