public class fileOutputStreamTest {
public static void main(String[] args) throws IOException {
//开始时间
long startTime = System.currentTimeMillis();
//复制视频,调用下面方法
method1();
// method2();
// method3();
// method4();
//结束时间
long endTime = System.currentTimeMillis();
System.out.println("本次复制共耗时"+(endTime-startTime)+"毫秒");
}
//第一种方法:基本字节流一次读写一个字节
public static void method1() throws IOException {
FileInputStream fis = new FileInputStream("F:\\xiaomi's.avi");
FileOutputStream fos = new FileOutputStream("textpro\\xiaomi's.avi");
int by ;
while ((by = fis.read())!=-1){
fos.write(by);
}
fos.close();
fis.close();
}
//第二种方法:基本字节流一次读写一个字节数组
public static void method2() throws IOException {
FileInputStream fis = new FileInputStream("F:\\xiaomi's.avi");
FileOutputStream fos = new FileOutputStream("textpro\\xiaomi's.avi");
byte[] bys = new byte[1024];
int len;
while ((len = fis.read(bys))!=-1){
fos.write(bys,0,len);
}
fos.close();
fis.close();
}
//第三种方法;字节缓冲流一次读写一个字节
public static void method3() throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("F:\\xiaomi's.avi"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("textpro\\xiaomi's.avi"));
int by ;
while ((by = bis.read())!=-1){
bos.write(by);
}
bis.close();
bos.close();
}
//第四种方法:字节缓冲流一次读写一个字节数组
public static void method4() throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("F:\\xiaomi's.avi"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("textpro\\xiaomi's.avi"));
byte[] bys = new byte[1024];
int len = 1;
while ((len = bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bis.close();
bos.close();
}
}
本次字节流视频复制有四种方法可选择调用:
1、基本字节流一次读取一个字节
2、基本字节流一次读取一个字节数组
3、缓冲字节流一次读取一个字节
4、缓冲字节流一次读取一个字节数组
经对比。缓冲字节流一次读取一个字节数组效率最高