下面展示四种方式实现复制(视频),并记录每种方式复制视频的时间:
1:基本字节流一次读写一个字节
2:基本字节流一次读写一个字节数组
3:字节缓冲流一次读写一个字节
4:字节缓冲流一次读写一个字节数组
每种实现方式代码如下:
package com.ahclg.ioDemo;
import java.awt.image.BufferedImage;
import java.io.*;
public class CopyBufferDemo {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// method1();
// method2();
// method3();
method4();
long endTime = System.currentTimeMillis();
System.out.println("共耗时: " + (endTime - startTime) + "毫秒");
}
// 1:基本字节流一次读写一个字节
public static void method1(){
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("a.txt");
fos = new FileOutputStream("a1.txt");
int by = 0;
while ((by = fis.read()) != -1){
fos.write(by);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
closeRes(fos,fis);
}
}
//2:基本字节流一次读写一个字节数组
public static void method2(){
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("a.txt");
fos = new FileOutputStream("a2.txt");
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes)) != -1){
fos.write(bytes);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
closeRes(fos,fis);
}
}
//3:字节缓冲流一次读写一个字节
public static void method3(){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream("a.txt"));
bos = new BufferedOutputStream(new FileOutputStream("a3.txt"));
int by = 0;
while ((by = bis.read()) != -1){
bos.write(by);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
closeRes(bos, bis);
}
}
//4:字节缓冲流一次读写一个字节数组
public static void method4(){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream("a.txt"));
bos = new BufferedOutputStream(new FileOutputStream("a4.txt"));
byte[] bytes = new byte[1024];
int len = 0;
while ((len = bis.read(bytes)) != -1){
bos.write(bytes,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
closeRes(bos,bis);
}
}
//释放资源
public static void closeRes(OutputStream bos,InputStream bis){
if (bos != null && bis != null){
try {
bos.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}