缓冲区设置都是1024 为啥用byByte只用50ms 而Buffered要用10318ms

来源:4-5 字节缓冲流

三爷JaVaja

2017-06-09 11:49

public static void main(String[] args)throws IOException {
String srcFile="D:\\imooc\\1.jpg";
String destFile="D:\\imooc\\2.jpg";
String destFile2="D:\\imooc\\3.jpg";
long start =System.currentTimeMillis();
IOUtil.CopyFileByBuffer(new File(srcFile), new File(destFile));
long end =System.currentTimeMillis();
System.out.println(end-start);
long start2 =System.currentTimeMillis();
IOUtil.copyFile(new File(srcFile), new File(destFile2));
long end2 =System.currentTimeMillis();
System.out.println(end2-start2);
}
缓冲区设置都是1024 为啥用byByte只用50ms 而Buffered要用10318ms
写回答 关注

1回答

  • qHK丨DC
    2017-06-09 15:17:44
    已采纳

    比如从一个缸往另一个缸中倒水,前者直接到,后者是有缓冲区的,相当于一个桶,然后往桶里加水,然后再往另一个缸中到。  字节数组最快(批量),有缓冲区的次之(一杯一杯加到桶里再将桶中的倒入缸中),一个字节一个字节最慢(相当于一杯一杯)。  太详细的有点啰嗦,将就看吧。


    三爷JaVa...

    好像明白了 又重新看了下 他那里用CopyByByte是没有缓冲数组buf的 所以是真正的一滴一滴移动,我这里有缓冲所以就快很多

    2017-06-10 11:26:22

    共 2 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133789 学习 · 1030 问题

查看课程

相似问题