字节流与缓冲字节流的区别:
- 操作方式:字节流字节操作文件,字节缓冲流先将数据添加到缓冲区,再将数据写入到文件中(或者读取文件);
- 效率:字节缓冲流的效率要高于字节流;(例子:把一堆砖头从A地搬往B地,一块一块的搬(字节流)的效率要远低于 先把砖头装进小推车再运往B地(缓冲流))
代码实例 - 比较字节流与缓冲字节流的效率
对比复制一个4M的视频文件耗时情况;
/**
* 复制一个4M的视频文件
*/
public static void copyVideo() throws Exception{
//字节流复制视频文件
long a = System.currentTimeMillis();
FileInputStream inputStream = new FileInputStream("src/test.mp4");
FileOutputStream outputStream = new FileOutputStream("src/byte/test.mp4");
byte[] bytes = new byte[1024];
int len = 0;
while ((len = inputStream.read(bytes))!=-1){
outputStream.write(bytes,0,len);
}
outputStream.close();
inputStream.close();
System.out.println("字节流复制4M视频共耗时:"+(System.currentTimeMillis()-a));
long b = System.currentTimeMillis();
//字节缓冲流复制视频文件
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("src/test.mp4"));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("src/byte/test.mp4"));
int len2 = 0;
byte[] bytes1 = new byte[1024];
while ((len2=bufferedInputStream.read(bytes1))!=-1){
bufferedOutputStream.write(bytes1,0,len2);
}
bufferedOutputStream.close();
bufferedInputStream.close();
System.out.println("字节缓冲流复制4M视频共耗时:"+(System.currentTimeMillis()-b));
}
打印结果:
字节流复制4M视频共耗时:109
字节缓冲流复制4M视频共耗时:13
Over …