4种复制方式,复制快慢比较

  • 需求:将d:\test.avi文件进行复制

  •  采用4种方式复制
    
  •  方式1: 采用基本的流,一次一个字节的方式复制  共耗时 224613毫秒
    
  •  方式2: 采用基本的流,一个多个字节的方式赋值  共耗时327毫秒
    
  •  方式3: 采用高效的流,一次一个字节的方式复制  共耗时2047毫秒
    
  •  方式4: 采用高效的流,一个多个字节的方式赋值  共耗时96毫秒
    
  • 数据源: d:\test.avi

  • 目的地1: d:\copy1.avi

  • 目的地2: d:\copy2.avi

  • 目的地3: d:\copy3.avi

  • 目的地4: d:\copy4.avi

  • 实现的步骤:

  • 1,指定数据源

  • 2,指定目的地

  • 3,读数据

  • 4,写数据

  • 5,关闭流

*/

public class CopyAVI {

public static void main(String[] args) throws IOException {

    //开始计时

    long start = System.currentTimeMillis();

    //方式1: 采用基本的流,一次一个字节的方式复制

    //method1("d:\\test.avi","d:\\copy1.avi");

    //方式2: 采用基本的流,一个多个字节的方式赋值

    //method2("d:\\test.avi","d:\\copy2.avi");

    //方式3: 采用高效的流,一次一个字节的方式复制

    //method3("d:\\test.avi","d:\\copy3.avi");

    //方式4: 采用高效的流,一个多个字节的方式赋值

    method4("d:\\test.avi", "d:\\copy4.avi");

    

    //结束计时

    long end = System.currentTimeMillis();

    //打印耗时多少毫秒

    System.out.println("共耗时" +(end - start)+ "毫秒");
}



//方式4: 采用高效的流,一个多个字节的方式赋值

private static void method4(String src, String dest) throws IOException {

    //1,指定数据源

    BufferedInputStream in =new BufferedInputStream(new FileInputStream(src));

     //2,指定目的地

    BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(dest));

     //3,读数据

    byte[] buffer = new byte[1024];

    int len = -1;

    while ( (len = in.read(buffer)) != -1) {

        //4,写数据

        out.write(buffer, 0, len);

    }

     //5,关闭流

    in.close();

    out.close();

}



//方式3: 采用高效的流,一次一个字节的方式复制

private static void method3(String src, String dest) throws IOException

{

    //1,指定数据源

    BufferedInputStream in =new BufferedInputStream(new FileInputStream(src));

     //2,指定目的地
    BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(dest));

     //3,读数据

    int ch = -1;

    while ((ch=in.read()) != -1) {

        //4,写数据

        out.write(ch);  

    }       

     //5,关闭流

    in.close();

    out.close();

}



//方式2: 采用基本的流,一个多个字节的方式赋值

private static void method2(String src, String dest) throws IOException

{

    //1,指定数据源

    FileInputStream in = new FileInputStream(src);

    //2,指定目的地

    FileOutputStream out = new FileOutputStream(dest);

    //3,读数据

    byte[] buffer = new byte[1024];

    int len = -1;

    while ( (len=in.read(buffer)) != -1) {

        //4,写数据

        out.write(buffer, 0, len);

    }

    //5,关闭流

    in.close();

    out.close();

}



//方式1: 采用基本的流,一次一个字节的方式复制

private static void method1(String src, String dest) throws IOException

{

    //1,指定数据源

    FileInputStream in = new FileInputStream(src);

    //2,指定目的地

    FileOutputStream out = new FileOutputStream(dest);

    //3,读数据

    int ch = -1;

    while (( ch=in.read()) != -1) {

        //4,写数据

        out.write(ch);

    }

    //5,关闭流

    in.close();

    out.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值