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();
    }

    }

  • 相关阅读:
    【Leetcode_easy】961. N-Repeated Element in Size 2N Array
    【Leetcode_easy】953. Verifying an Alien Dictionary
    【Leetcode_easy】949. Largest Time for Given Digits
    【Leetcode_easy】944. Delete Columns to Make Sorted
    【Leetcode_easy】942. DI String Match
    【Leetcode_easy】941. Valid Mountain Array
    【Leetcode_easy】938. Range Sum of BST
    【Leetcode_easy】937. Reorder Log Files
    【Leetcode_easy】933. Number of Recent Calls
    【Leetcode_easy】929. Unique Email Addresses
  • 原文地址:https://www.cnblogs.com/xingsir/p/12022841.html
Copyright © 2011-2022 走看看