利用Java缓冲流复制视频文件

缓冲输入流 BufferedInputStream,缓冲输出流 BufferedOutputStream。
缓冲流内部有一个缓冲区,缓冲区是一个字节数组,默认大小为8192。
缓冲流不直接调用系统方法进行读写操作,而是通过传入的输入输出流对象来实现。
缓冲流对象实例化必须传入输入输出流(InputStream / OutputStream)对象作为参数,或者其子类对象如(FileInputStream / FileOutputStream),可选参数size为指定缓冲区大小。

缓冲流复制视频文件示例

public class CopyVideoTest {
    public static void main(String[] args) throws IOException {
        //源文件必须存在,目的文件可以不存在,输出流会自动创建
        File file1 = new File("C:\\Users\\Administrator\\Desktop\\FileTest\\测试视频1.mp4");
        File file2 = new File("C:\\Users\\Administrator\\Desktop\\FileTest\\测试视频2.mp4");
        FileInputStream fis = null;
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        try {
            //实例化流对象并进行绑定
            fis = new FileInputStream(file1);
            fos = new FileOutputStream(file2);
            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);

            byte[] bytes = new byte[1024];
            //如果len==-1,表示已经读取完文件。如果len!=-1,表示这次实际读取的字节数目
            int len = -1;
            do {
                len = bis.read(bytes);   //尝试读取一个数组长度的数据
                if (len!=-1){       //读取出数据后写入目标文件
                    bos.write(bytes,0,len);
                }
            }while (len!=-1);   //文件没读取完就继续

        }catch (IOException e){
            e.printStackTrace();
        }finally {
            //关闭流,先关闭缓冲流,再关闭输入输出流
            if (bis!=null){
                bis.close();
            }
            if (bos!=null){
                bos.close();
            }
            if (fis!=null){
                fis.close();
            }
            if (fos!=null){
                fos.close();
            }
        }
    }
}
上一篇:python--将多张图片显示在一张画布上


下一篇:使用 Itext 生成PDF字节数组(文件流不落地)