Java | 字節流、字節緩衝流 | 複製視頻時間對比


需求

分別以以下四種方式複製視頻,並輸出每種方式所需時間:

  • 基本字節流一次讀取一個字節複製視頻
  • 基本字節流一次讀取一個字節數組複製視頻
  • 字節緩衝流一次讀取一個字節複製視頻
  • 字節緩衝流一次讀取一個字節數組複製視頻

代碼

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;
	}	
}


效果預覽

時間性能:
在這裏插入圖片描述
文件:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章