使用字节流复制文件的四种方式比较

1.使用字节流复制视频

import java.io.*;
public class CopyMovie {
    public static void main(String[] args) throws IOException{
        //分别计算四种方法复制视频需要的时间
        long start1=System.currentTimeMillis();
        copyMethod01();
        long end1=System.currentTimeMillis();
        System.out.println("共耗时:"+(end1-start1)+"毫秒");
        long start2=System.currentTimeMillis();
        copyMethod02();
        long end2=System.currentTimeMillis();
        System.out.println("共耗时:"+(end2-start2)+"毫秒");
        long start3=System.currentTimeMillis();
        copyMethod03();
        long end3=System.currentTimeMillis();
        System.out.println("共耗时:"+(end3-start3)+"毫秒");
        long start4=System.currentTimeMillis();
        copyMethod04();
        long end4=System.currentTimeMillis();
        System.out.println("共耗时:"+(end4-start4)+"毫秒");
    }
    //基本字节流一次读写一个字节,耗时最长
    private static void copyMethod01() throws IOException {
        FileInputStream fis=new FileInputStream("D:\\File\\movie.avi");
        FileOutputStream fos=new FileOutputStream("D:\\File\\copy01.avi");
        int i;
        while ((i=fis.read())!=-1){
            fos.write(i);
        }
        fis.close();
        fos.close();
    }
    //基本字节流一次读写一个字节数组
    private static void copyMethod02() throws IOException {
        FileInputStream fis=new FileInputStream("D:\\File\\movie.avi");
        FileOutputStream fos=new FileOutputStream("D:\\File\\copy02.avi");
        int len;
        //字节数组的长度不固定,一般为1024的整数倍
        byte[] bytes=new byte[1024];
        while ((len=fis.read(bytes))!=-1){
            fos.write(bytes,0,len);
        }
        fis.close();
        fos.close();
    }
    //字节缓冲流一次读写一个字节
    private static void copyMethod03() throws IOException {
        FileInputStream fis=new FileInputStream("D:\\File\\movie.avi");
        FileOutputStream fos=new FileOutputStream("D:\\File\\copy03.avi");
        BufferedInputStream bis=new BufferedInputStream(fis);
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        int i;
        while ((i=bis.read())!=-1){
            bos.write(i);
        }
        bis.close();
        bos.close();
    }
    //字节缓冲流一次读写一个字节数组,耗时最短
    private static void copyMethod04() throws IOException {
        FileInputStream fis=new FileInputStream("D:\\File\\movie.avi");
        FileOutputStream fos=new FileOutputStream("D:\\File\\copy04.avi");
        BufferedInputStream bis=new BufferedInputStream(fis);
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        int len;
        byte[] bytes=new byte[1024];
        while ((len=bis.read(bytes))!=-1){
            bos.write(bytes,0,len);
        }
        bis.close();
        bos.close();
    }
}

2.字节流如何追加写入

FileOutputStream(File file, boolean append)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream fos=new FileOutputStream(“D:\File\file.txt”,true);
通过此输出流写数据即可追加写入

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值