字节流的三种操作方法效率对比

public class IOStream {
public static void main(String[] args) throws IOException {
//目标文件大小:43.9M
Original ();//使用自建缓冲区方式复制文件耗时148毫秒
Buff (); //使用包装流复制文件耗时2727毫秒
Utils ();//使用工具类复制文件耗时104毫秒
}
//使用自建缓冲区方式复制文件
private static void Original() throws IOException {

File file = new File ("source.mp4");
InputStream in = new FileInputStream (file);
OutputStream out = new FileOutputStream ("/Users/Shared/a.mp4");

long startTime = System.currentTimeMillis ();

byte[] arr = new byte[8192];
int len;
while ((len = in.read (arr) )!= -1){
out.write (arr);
}

long endTime = System.currentTimeMillis ();
System.out.println (endTime-startTime);

in.close ();
out.close ();
}
//使用包装流方式复制文件
private static void Buff() throws IOException {
File file = new File ("source.mp4");
InputStream in = new FileInputStream (file);
BufferedInputStream bfi= new BufferedInputStream (in);
OutputStream out = new FileOutputStream ("/Users/Shared/b.mp4");
BufferedOutputStream bfo = new BufferedOutputStream (out);

long startTime = System.currentTimeMillis ();

int len;
while ((len = bfi.read () )!= -1){
bfo.write (len);
}

long endTime = System.currentTimeMillis ();
System.out.println (endTime-startTime);

bfi.close ();
bfo.close ();
}

//使用工具包复制文件
private static void Utils() throws IOException {

File file1 = new File ("source.mp4");//文件大小:43.9M
File file2 = new File ("/Users/Shared/c.mp4");

long startTime = System.currentTimeMillis ();

FileUtils.copyFile (file1,file2);

long endTime = System.currentTimeMillis ();
System.out.println (endTime-startTime);
}
}
posted @ 2017-11-11 18:50  gdwkong  阅读(504)  评论(0编辑  收藏  举报