zoukankan      html  css  js  c++  java
  • 对比两种方式复制文件的效率

    package seday03;

    import java.io.IOException;
    import java.io.RandomAccessFile;

    /**
    * @author xingsir
    * RandomAccessFile 复制文件操作
    */
    public class CopyDemo {

    public static void main(String[] args) throws IOException {
    //首先要创建一个test1.txt文件
    RandomAccessFile src= new RandomAccessFile("./test1.txt","r");
    RandomAccessFile desc= new RandomAccessFile("./test1_copy.txt","rw");

    int d = 0;//初始化d的值
    long start = System.currentTimeMillis();//记录开始时间
    //循环读取test1.txt文件内容
    while((d = src.read())!=-1) {//判断当读取出来为-1时,表示数据已经读取完毕,测试就跳出循环
    desc.write(d);//写
    }
    long end = System.currentTimeMillis();//记录结束开始时间
    System.out.println("复制完毕!耗时:"+(end-start)+"ms");//耗时为(结束时间-开始时间)

    src.close();//关闭
    desc.close();//关闭

    }

    }

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

    package seday03;

    import java.io.IOException;
    import java.io.RandomAccessFile;

    /**
    * @author xingsir
    * 由于机械硬盘读写效率差,频繁进行读写复制效率不高。我们可以通过提高每次读写的数据量,减少实际读写的次数从而提高读写效率。
    * 单字节读写一般也可称为"随机读写", 一组字节读写也可称为"块读写"
    */
    public class CopyDemo2 {

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

    RandomAccessFile src= new RandomAccessFile("./test1.txt","r");
    RandomAccessFile desc= new RandomAccessFile("./test1_cp.txt","rw");

    /*字节间的换算
    * 8bit =1byte
    * 1024byte =1kb
    * 1024kb =1mb
    * 1024mb =1gbk
    */
    byte[] data=new byte[1024*10];//10k

    int len=-1;//表示每次实际读取到的字节量
    long start =System.currentTimeMillis();//记录开始时间
    /*
    * int read(byte[] data)
    * 连续读取给定字节数组总长度的字节量,并将读取到的字节存入该数组中。返回值为实际读取到的字节量,
    * 我 们应当根据实际读取的字节量判定该数组中本次读取数 据的实际长度。
    *
    */
    while((len=src.read(data))!=-1) {//每次读取10k的字节量,然后判断长度len,
    /*
    * void write(byte[] data),一次性将给定字节数组中所有字节写出
    * void write(byte[] data,int offset,int len),将给定字节数组从下标
    * offset处的连续len个字节一次性写出
    */
    desc.write(data,0,len);
    }

    long end =System.currentTimeMillis();//记录结束开始时间
    System.out.println("复制完成毕,耗时"+(end-start)+"ms");//耗时为(结束时间-开始时间)

    src.close();//关闭
    desc.close();//关闭
    }

    }

  • 相关阅读:
    100LS练习方法
    甲方开源项目
    linux端口转发方式
    内网的一些穿透工具
    Checkpoint防火墙(一)
    2020目标
    Linux逻辑卷的扩容和缩小
    linux挂载磁盘
    Selinux介绍
    以太坊私链搭建
  • 原文地址:https://www.cnblogs.com/xingsir/p/11995267.html
Copyright © 2011-2022 走看看