需求:
把D:\hhh\1.mp4 复制到模块目录下的 1.mp4
思路:
1:根据数据源创建字节输入流对象
2:根据目的地创建字节输出流对象
3:读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)
4:释放资源
`四种方式实现复制视频`,并记录每种方式复制视频的时间
1:基本字节流一次读写一个字节 共耗时:52365毫秒
2:基本字节流一次读写一个字节数组 共耗时:112毫秒
3:字节缓冲流一次读写一个字节 共耗时:462毫秒
4:字节缓冲流一次读写一个字节数组 共耗时:71毫秒
public class CopyAviDemo {
public static void main(String[] args) throws IOException {
//记录开始时间
long startTime = System.currentTimeMillis();
//复制视频
//methond1();
//methond2();
//methond3()
//记录结束时间
long endTime = System.currentTimeMillis();
System.out.println("共耗时:" + (endTime - startTime) + "毫秒");
}
//基本字节流,一次读写一字节
public static void methond1() throws IOException {
//D:\hhh\1.mp4
// 复制到模块目录下的 1.mp4
FileInputStream fis = new FileInputStream("D:\\hhh\\1.mp4");
FileOutputStream fos = new FileOutputStream("31myByteStream\\1.mp4");
int by ;
while ((by=fis.read())!=-1){
fos.write(by);
}
fos.close();
fis.close();
}
//2:基本字节流一次读写一个字节数组
public static void methond2() throws IOException {
//D:\hhh\1.mp4
// 复制到模块目录下的 1.mp4
FileInputStream fis = new FileInputStream("D:\\hhh\\1.mp4");
FileOutputStream fos = new FileOutputStream("31myByteStream\\1.mp4");
byte[] bys = new byte[1024];
int len;
while ((len=fis.read(bys))!=-1){
fos.write(bys,0,len);
}
fos.close();
fis.close();
}
//3:字节缓冲流一次读写一个字节
public static void method3()throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\hhh\\1.mp4"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("31myByteStream\\1.mp4"));
int by;
while ((by=bis.read())!=-1){
bos.write(by);
}
bis.close();
bos.close();
}
//4:字节缓冲流一次读写一个字节数组
public static void method4()throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\hhh\\1.mp4"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("31myByteStream\\1.mp4"));
byte[] bys = new byte[1024];
int len;
while ((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bis.close();
bos.close();
}
}
运行截图: