四种复制文件的效率高低
package io2;
import java.io.*;
/**
*
* 测试复制的时间
* Create by stefan
* Date on 2018-05-28 10:28
* Convertion over Configuration!
*/
public class copy2 { //一个字节一个字节的复制,耗时22697毫秒 public static void fun() throws IOException { FileInputStream fis = new FileInputStream("F:\\汤包\\慕课大巴\\modern-java.pdf"); FileOutputStream fos = new FileOutputStream("E:\\modern-java.pdf"); int by = 0; while ((by=fis.read()) != -1) { fos.write(by); fos.flush(); } fis.close(); fos.close(); } //1024字节数组复制 耗时63毫秒 public static void fun1() throws IOException { FileInputStream fis = new FileInputStream("F:\\汤包\\慕课大巴\\modern-java.pdf"); FileOutputStream fos = new FileOutputStream("E:\\modern-java.pdf"); int len = 0; byte[] bytes =new byte[1024]; while ((len=fis.read(bytes)) != -1) { fos.write(bytes,0,len); fos.flush(); } fis.close(); fos.close(); } // 一个字节一个字节复制,但是用了缓冲流 耗时64毫秒 public static void fun2() throws IOException { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\modern-java.pdf")); BufferedInputStream bis = new BufferedInputStream(new FileInputStream("F:\\汤包\\慕课大巴\\modern-java.pdf")); int by = 0; while ((by=bis.read()) != -1) { bos.write(by); bos.flush(); } bis.close(); bos.close(); } // 1024字节数组复制并用了缓冲流 耗时7毫秒 public static void fun3() throws IOException { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\modern-java.pdf")); BufferedInputStream bis = new BufferedInputStream(new FileInputStream("F:\\汤包\\慕课大巴\\modern-java.pdf")); int len = 0; byte[] bytes =new byte[1024]; while ((len=bis.read(bytes)) != -1) { bos.write(bytes,0,len); bos.flush(); } bis.close(); bos.close(); } public static void main(String args[]) throws IOException { long t1 = System.currentTimeMillis(); fun3(); long t2 = System.currentTimeMillis(); System.out.println(t2-t1); } }
转自https://www.jianshu.com/p/63d1751d3eac