字节流复制视频

字节流相当于字符流来说,有更广泛的读写范围。也就是说:字符流管得了的事我字节流管,字符流不敢管的事我字节流也管。
在这里插入图片描述
我们来用字节流复制视频,这个MP4文件大概8MB。

在这里插入图片描述
我们通过
方式1:基本字节流一次读写一个字节(method1)
方式2:基本字节流一次读写一个数组(method2)
方式3:字节缓冲流一次读取一个字节(method3)
方式4:字节缓冲流一次读取一个字节数组(method4)
四种方式来复制MP4文件到指定目录,比较效率。
L:\Java\ByteStream\copy.MP4 ——> L:\Java\video\copy.MP4

package bufferedstream;
/*复制视频记录所用时间:
*   方式1:基本字节流一次读写一个字节
*   方式2:基本字节流一次读写一个字节数组
*   方式3:字节缓冲流一次读取一个字节
*   方式4:字节缓冲流一次读取一个字节数组*/

import java.io.*;

public class CopyAviDemo {
    public static void main(String[] args) throws IOException {
        //记录开始时间
        long startTime = System.currentTimeMillis();

        //复制视频
        //method1();
        //method2();
        //method3();
        //method4();

        //记录结束时间
        long endTime = System.currentTimeMillis();
        System.out.println("耗时:" + (endTime - startTime) + "ms");

    }

    // 方式1:基本字节流一次读写一个字节
    public static void method1() throws IOException {
        //文件所在目录:L:\Java\ByteStream\copy.MP4
        FileInputStream fis = new FileInputStream("L:\\Java\\ByteStream\\copy.MP4");
        //文件将复制的目标目录:L:\Java\video\copy.MP4
        FileOutputStream fos = new FileOutputStream("L:\\Java\\video\\copy.MP4");

        int by;
        while ((by = fis.read()) != -1) {
            fos.write(by);
        }

        fis.close();
        fos.close();
    }

    // 方式2:基本字节流一次读写一个字节数组
    public static void method2() throws IOException {
        //文件所在目录:L:\Java\ByteStream\copy.MP4
        FileInputStream fis = new FileInputStream("L:\\Java\\ByteStream\\copy.MP4");
        //文件将复制的目标目录:L:\Java\video\copy.MP4
        FileOutputStream fos = new FileOutputStream("L:\\Java\\video\\copy.MP4");

        byte[] bys = new byte[1024];
        int len;
        while ((len = fis.read(bys)) != -1) {
            fos.write(bys, 0, len);
        }

        fis.close();
        fos.close();
    }

    //方式3:字节缓冲流一次读取一个字节
    public static void method3() throws IOException {
        //文件所在目录:L:\Java\ByteStream\copy.MP4
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("L:\\Java\\ByteStream\\copy.MP4"));
        //文件将复制的目标目录:L:\Java\video\copy.MP4
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("L:\\Java\\video\\copy.MP4"));

        int by;
        while ((by = bis.read()) != -1) {
            bos.write(by);
        }

        bis.close();
        bos.close();
    }

    //方式4:字节缓冲流一次读取一个字节数组
    public static void method4() throws IOException {
        //文件所在目录:L:\Java\ByteStream\copy.MP4
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("L:\\Java\\ByteStream\\copy.MP4"));
        //文件将复制的目标目录:L:\Java\video\copy.MP4
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("L:\\Java\\video\\copy.MP4"));

        byte[] bys = new byte[1024];
        int len;
        while ((len = bis.read(bys)) != -1) {
            bos.write(bys,0,len);
        }

        bis.close();
        bos.close();
    }

    }


方式1复制时间:
在这里插入图片描述
方式2复制时间:
在这里插入图片描述

方式3复制时间:
在这里插入图片描述

方式4复制时间:
在这里插入图片描述
缓冲流一次读取一个字节数组的方式简直是快枪手,复制8MB的文件的速度比打王者的延时都低,在大文件的处理中,各位应该知道用哪个了吧…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值