zoukankan      html  css  js  c++  java
  • 使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream

    package seday06;

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

    /**
    * @author xingsir
    * 使用文件流完成文件的复制操作
    *
    * 文件流:
    * java.io.FileInputStream;
    * java.io.FileOutputStream;
    */
    public class CopyDemo {

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

    FileInputStream fis=new FileInputStream("testApp.rar");
    FileOutputStream fos= new FileOutputStream("testApp_cp.rar");
    //1024byte =1kb ,1kb*10=10kb
    byte[] data=new byte[1024*10];

    int len=-1;
    long start = System.currentTimeMillis();//获取开始时间
    //循环
    while ((len=fis.read(data))!=-1) {//当每次读取字节不等于-1,表示都有数据
    fos.write(data);//写
    }
    System.out.println("复制完成");
    long end = System.currentTimeMillis();//获取结束时间
    System.out.println("复制完成,耗时:"+(end-start)+"ms");//打印
    fis.close();
    fos.close();

    }

    }

    //=========================================================================

    package seday06;

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

    /**
    * @author xingsir
    * 使用缓冲流完成文件复制
    *
    * 缓冲流:
    * java.io.BufferedInputStream
    * java.io.BufferedOutputStream
    * 它们是一组高级流,将它们连接上以后可以提高读写效率。这样一来无论我们使用单字节读写还是块读写,都可以保证读写效率。
    */
    public class CopyDemo2 {

    public static void main(String[] args) throws IOException {
    FileInputStream fis=new FileInputStream("testApp.rar");
    FileOutputStream fos= new FileOutputStream("testApp_cp.rar");

    BufferedInputStream bis= new BufferedInputStream(fis);//缓冲流
    BufferedOutputStream bos=new BufferedOutputStream(fos);//缓冲流


    //1024byte =1kb ,1kb*10=10kb
    byte[] data=new byte[1024*10];

    int len=-1;
    long start = System.currentTimeMillis();//获取开始时间
    //循环,使用缓冲流读取
    while ((len=bis.read(data))!=-1) {//当每次读取字节不等于-1,表示都有数据
    bos.write(data);//使用缓冲流写
    }
    System.out.println("复制完成");
    long end = System.currentTimeMillis();//获取结束时间
    System.out.println("复制完成,耗时:"+(end-start)+"ms");
    fis.close();
    fos.close();
    }

    }

  • 相关阅读:
    Salesforce学习笔记(一)
    踏上Salesforce的学习之路(二)
    踏上Salesforce的学习之路(一)
    Salesforce注册开发者账号
    ubuntu下安装rtl8811cu/rtl8821cu网卡 Tplink WDN5200H网卡
    基于JRebel开发的MySQL Explain插件
    Logback配置解析
    基于springboot实现http响应异常信息国际化
    高并发场景下请求合并的实践
    后台开发常用mysql语句_v1.0
  • 原文地址:https://www.cnblogs.com/xingsir/p/12022841.html
Copyright © 2011-2022 走看看