缓冲流效率测试_文件复制

(1)使用字节输入流对象FileInputStream、输出流对象FileOutputStream测试
package com.IOAndProperties.CopyFile;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
   文件复制练习:一都一写

   明确:
        数据源:c:\\a.jpg
        数据目的地:d:\\a.jpg
   文件复制的步骤:
        1.创建一个字节输入流对象,构造方法中绑定要读取的数据源
        2.创建一个字节输出流对象,构造方法中绑定要写入的目的地
        3.使用字节输入流对象中的方法read读取文件
        4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
        5.释放资源

   文件的大小:5,808,587 字节
       一次读写一个字节:57219毫秒
       使用数组缓冲读取多个字节,写入多个字节:97毫秒
            */
public class Demo01File {
       public static void main(String[] args) throws IOException {
           long s = System.currentTimeMillis();
         //  1.创建一个字节输入流对象,构造方法中绑定要读取的数据源
           FileInputStream fis = new FileInputStream("c:\\a.jpg");
         //  2.创建一个字节输出流对象,构造方法中绑定要写入的目的地
           FileOutputStream fos = new FileOutputStream("d:\\a.jpg");
           //一次读取一个字节写入一个字节的方式
         //  3.使用字节输入流对象中的方法read读取文件
         /*   int len = 0;
           while ((len=fis.read())!=-1 ){
            // 4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
               fos.write(len);
           }*/

          //使用数组缓冲读取多个字节,写入多个字节
           byte[] bytes = new  byte[1024];
           //3.使用字节输入流对象中的方法read读取文件
           int len = 0;//每次读取的有效字节个数
           while ((len=fis.read(bytes))!=-1){
           // 4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中
             fos.write(bytes,0,len);
           }
           //  5.释放资源(先关闭写的,后关闭读的;如果写完了,肯定读取完毕了)
           fos.close();
           fis.close();
           long e = System.currentTimeMillis();
           System.out.println("复制文件共耗时:"+(e-s)+"毫秒");
       }
}

结果:

文件的大小:5,808,587 字节
一次读写一个字节:57219毫秒
使用数组缓冲读取多个字节,写入多个字节:97毫秒

(2)使用字节缓冲输入流对象BufferedInputStream、字节缓冲输出流BufferedOutputStream对象测试
package com.IOAndProperties.CopyFile;

import java.io.*;

/*
   文件复制练习:一都一写

   明确:
        数据源:c:\\a.jpg
        数据目的地:d:\\a.jpg
   文件复制的步骤:
       1.创建字节缓冲输入流对象,构造方法中传递字节输入流
       2.创建字节缓冲输出流对象,构造方法中传递字节输出流
       3.使用字节缓冲输入流对象中的方法read,读取文件
       4.使用字节缓冲输出流中的方法write,把读取的数据写入内部缓冲区中
       5.释放资源(会先把缓冲区中的数据,刷新到文件中

   文件的大小:5,808,587 字节
       一次读写一个字节:168毫秒
       使用数组缓冲读取多个字节,写入多个字节:21毫秒
            */
public class Demo02File {
       public static void main(String[] args) throws IOException {
           long s = System.currentTimeMillis();
          // 1.创建字节缓冲输入流对象,构造方法中传递字节输入流
           BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c:\\a.jpg"));
          // 2.创建字节缓冲输出流对象,构造方法中传递字节输出流
           BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:\\a.jpg"));
           //3.使用字节缓冲输入流对象中的方法read,读取文件
           //一次读写一个字节
     /*      int len = 0;
           while ((len=bis.read())!=-1){
               //4.使用字节缓冲输出流中的方法write,把读取的数据写入内部缓冲区中
               bos.write(len);
           }
     */
           //使用数组缓冲读取多个字节,写入多个字节
           byte[] bytes = new byte[1024];
           int len =0;
           while ((len=bis.read(bytes))!= -1){
               bos.write(bytes,0,len);
           }

           //5.释放资源(会先把缓冲区中的数据,刷新到文件中
           bos.close();
           bis.close();
           long e = System.currentTimeMillis();
           System.out.println("复制文件共耗时:"+(e-s)+"毫秒");
       }
}

缓冲流测试结果:

文件的大小:5,808,587 字节
一次读写一个字节:168毫秒
使用数组缓冲读取多个字节,写入多个字节:21毫秒

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值