Cuatro formas de copiar video y registrar el tiempo de cada método para copiar video
- El flujo de bytes básico lee y escribe un byte a la vez
- La secuencia de bytes básica lee y escribe una matriz de bytes a la vez
- La secuencia de búfer de bytes lee y escribe un byte a la vez
- La secuencia de búfer de bytes lee y escribe una matriz de bytes a la vez
public class CopyAviDemo { public static void main (String [] args) lanza IOException { // Tiempo de inicio de grabación largo startTime = System.currentTimeMillis (); // Copiar video // método1 (); // Tiempo total transcurrido: 454 ms / / method2 (); // Tiempo total transcurrido: 2 ms // método3 (); // Tiempo total transcurrido : 4 ms método4 (); // Tiempo total transcurrido: 1 ms // Tiempo final de grabación long endTime = System.currentTimeMillis (); // Graba mucho tiempo System.out.println ("Tiempo total transcurrido:" + (endTime-startTime) + "millisecond" ); } // flujo de búfer de bytes lee y escribe una matriz de bytes a la vez public static void method4 () lanza IOException { // create Objeto BufferedInputStream bis = new BufferedInputStream ( nuevo FileInputStream ("F: \\ java \\ Copy video case.mp4" )); BufferedOutputStream bos = new BufferedOutputStream ( nuevo FileOutputStream ("myFile \\ Copy video case.mp4" )); byte [] bys = nuevo byte [1024 ]; int len; while ((len = bis.read (bys))! = -1 ) { bos.write (bys, 0 , len); } bis.close (); bos.close (); } // flujo de búfer de bytes una vez Leer y escribir un byte public static void method3 () arroja IOException { // Crear objeto BufferedInputStream bis = new BufferedInputStream ( nuevo FileInputStream ("F: \\ java \\ copy video case.mp4" )); BufferedOutputStream bos = new BufferedOutputStream ( nuevo FileOutputStream ("myFile \\ copy video case.mp4" )); //Leer y escribir datos int by; while ((by = bis.read ())! = -1 ) { bos.write (by); } bis.close (); bos.close (); } // Flujo de bytes básico Leer y escribir una matriz de bytes a la vez public static void method2 () arroja IOException { // Crear objeto FileInputStream fis = new FileInputStream ("F: \\ java \\ copy video case.mp4" ); FileOutputStream fos = new FileOutputStream ("myFile \\ Copiar video case.mp4 " ); byte [] bys = nuevo byte [1024]; int len; while ((len = fis.read (bys))! = -1 ) { fos.write (bys, 0 , len); } fis.close (); fos.close (); } // El flujo de bytes básico lee y escribe un byte a la vez public static void method1 () arroja IOException { // Crear objeto FileInputStream fis = new FileInputStream ("F: \\ java \\ copy video case.mp4" ); FileOutputStream fos = new FileOutputStream ("myFile \\ copy video case.mp4" ); // Leer y escribir datos intpor; while ((by = fis.read ())! = - 1 ) { fos.write (by); } // 释放 资源 fis.close (); fos.close (); } }
El archivo de video seleccionado es demasiado pequeño, por lo que la diferencia no es obvia.
El uso de secuencias de búfer de bytes para leer y escribir una matriz de bytes a la vez es lo más rápido