字节缓冲流
- 字节缓冲流
- 缓冲输出流
- 缓冲输入流
- 复制视频速度对比
字节缓冲流
缓冲输出流
BufferadOutputStream通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个细节导致底层系统的调用
构造方法 BufferadOutputStream(OutputStream out)
缓冲输入流
BufferadInputStream为另一个输入流添加了功能,即缓冲输入并支持mark和reset方法的功能。创建BufferedrmputStream将创建一个内部缓冲区数组。当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节。mark操作会记住输入流中的一个点,并且reset操作会导致从最近的mark操作读取的所有字节在从包含的输入流中取出新字节之前重新读取。
构造方法 BufferadIntputStream(IntputStream in)
复制视频速度对比
视频大小为12 MB
package com.itheima;
import java.io.*;
public class CopyMp4Demo {
/*
四种方式复制视频:
1.基本字节流一次读写一个字节
2.基本字节流一次读写一个字节数组
3.字节缓冲流一次读写一个字节
4.字节缓冲流一次读写一个字节数组
*/
public static void main(String[] args) throws IOException {
long startTime=0,endTime=0;
//方式1
startTime=System.currentTimeMillis();
method1();
endTime=System.currentTimeMillis();
System.out.println("方式1共耗时:"+(endTime-startTime)+"毫秒");
//方式2
startTime=System.currentTimeMillis();
method2();
endTime=System.currentTimeMillis();
System.out.println("方式2共耗时:"+(endTime-startTime)+"毫秒");
//方式3
startTime=System.currentTimeMillis();
method3();
endTime=System.currentTimeMillis();
System.out.println("方式3共耗时:"+(endTime-startTime)+"毫秒");
//方式4
startTime=System.currentTimeMillis();
method4();
endTime=System.currentTimeMillis();
System.out.println("方式4共耗时:"+(endTime-startTime)+"毫秒");
}
private static void method4() throws IOException{
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("H:\\code\\IdeaProjects\\heima\\src\\com\\itheima\\vedio.mp4"));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("方式4.mp4"));
byte[] bys=new byte[1024];
int len;
while((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bis.close();
bos.close();
}
private static void method3() throws IOException {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("H:\\code\\IdeaProjects\\heima\\src\\com\\itheima\\vedio.mp4"));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("方式3.mp4"));
int by;
while((by=bis.read())!=-1){
bos.write(by);
}
bis.close();
bos.close();
}
private static void method2() throws IOException {
FileInputStream fis=new FileInputStream("H:\\code\\IdeaProjects\\heima\\src\\com\\itheima\\vedio.mp4");
FileOutputStream fos=new FileOutputStream("方式2.MP4");
byte[] bys=new byte[1024];
int len;
while((len= fis.read(bys))!=-1){
fos.write(bys,0,len);
}
fis.close();
fos.close();
}
private static void method1() throws IOException {
FileInputStream fis=new FileInputStream("H:\\code\\IdeaProjects\\heima\\src\\com\\itheima\\vedio.mp4");
FileOutputStream fos=new FileOutputStream("方式1.MP4");
int by;
while((by= fis.read())!=-1){
fos.write(by);
}
fis.close();
fos.close();
}
}