需求
分別以以下四種方式複製視頻,並輸出每種方式所需時間:
基本字節流
一次讀取一個字節
複製視頻基本字節流
一次讀取一個字節數組
複製視頻字節緩衝流
一次讀取一個字節
複製視頻字節緩衝流
一次讀取一個字節數組
複製視頻
代碼
package BufferedStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class VideoDemo {
public static void main(String[] args) throws IOException {
String src = ".//test.mp4";
String des = ".//test";
System.out.println(basicOneByte(src,des+"01.mp4"));
System.out.println(basicByteArray(src, des + "02.mp4"));
System.out.println(bufferedOneByte(src, des+"03.mp4"));
System.out.println(bufferedByteArrar(src, des+"04.mp4"));
}
public static long bufferedByteArrar(String src,String des) throws IOException{
long a = System.currentTimeMillis();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(des));
byte[] bys = new byte[1024];
int len;
while((len=bis.read(bys))!=-1) {
bos.write(bys);
}
bis.close();
bos.close();
long b = System.currentTimeMillis();
return b-a;
}
public static long bufferedOneByte(String src,String des) throws IOException{
long a = System.currentTimeMillis();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(des));
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));
int a1;
while((a1=bis.read())!=-1)
bos.write(a1);
bos.close();
bis.close();
long b = System.currentTimeMillis();
return b-a;
}
public static long basicByteArray(String src,String des) throws IOException{
long beginTime = System.currentTimeMillis();
FileOutputStream fos = new FileOutputStream(des);
FileInputStream fis = new FileInputStream(src);
byte[] bys = new byte[1024];
int len;
while((len=fis.read(bys))!=-1) {
fos.write(bys);
}
long endTime = System.currentTimeMillis();
fos.close();
fis.close();
return endTime-beginTime;
}
public static long basicOneByte(String src,String des) throws IOException {
long beginTime = System.currentTimeMillis();
FileOutputStream fos = new FileOutputStream(des);
FileInputStream fis = new FileInputStream(src);
int a;
while((a=fis.read())!=-1) {
fos.write(a);
}
fis.close();
fos.close();
long endTime = System.currentTimeMillis();
return endTime - beginTime;
}
}
效果預覽
時間性能:
文件: