风铃飞弦
2017-01-06 16:27
前面说缓冲流是用桶装水,理应最快,但从结果上看不应该是copyFile花的时间最短吗?而copyFile用的是byte数组
copyFileByBuffer这里是一个字节一个字节读的--->(c=bis.read())!=-1,并非批量,应将它与copyFileByByte的速度相比,是快的。
如果copyFileByBuffer使用字节数组读取--->(b=in.read(buf, 0, buf.length))!=-1,
那么会比同样使用字节数组批量读取的copyFile快。
我个人认为复制文件最快的做法应该是批量读取到字节数组中然后使用缓冲输出流写入到文件。
并且在循环写入的过程中不要flush,要不然就失去了缓冲的意义,毕竟缓冲输出流在关闭的时候会将所有缓冲区中的数据全部写入文件。(注:flush()是防止在close之前有缓冲没有完全读完就被强行关闭了文件,在网络连接传输数据容易出问题。去掉缓冲循环的flush()速度会快很多)
文件传输基础——Java IO流
133789 学习 · 1030 问题
相似问题