你这个测试有问题啊,文件太小,搞大一点呗,还有你的buffer设的太小了,改大一点再看看(比如4092)。
然后在我的机器上测的结果如下:
文件大小 55M
buffer: 4092
fileUtilsTest: 490ms左右
IOTest: 550ms左右

解决方案 »

  1.   

    刚才又测了一下,跟文件大小关系不大,跟buffer大小有点关系,但影响不多,不知道楼主机器上为什么会差这么多。
      

  2.   

    特意查了一下LZ引用的FileUtil里实现的细节,其实他们用的也是IO,只不过缓冲区比你要更大而已。见源码:public static long copyLarge(InputStream input, OutputStream output)
        throws IOException
      {
        byte[] buffer = new byte[4096];
        long count = 0L;
        int n = 0;
        while (-1 != (n = input.read(buffer))) {
          output.write(buffer, 0, n);
          count += n;
        }
        return count;
      }
      

  3.   

    byte[] buffer = new byte[400];
    缓冲区过小,造成IO更加频繁,导致效率下降
      

  4.   

    byte[] buffer = new byte[400];同学,创建缓存区大小最好是512的倍数。
    常见的网络传输块大小一般也是512的倍数。
    当代硬盘的缓存大小,一般是Mb的倍数。
      

  5.   

    缓冲区设置的问题,apache也封装的io流啊,这有什么区别吗,你要是和apache的代码一样,你看看还有什么区别