源码先锋

源码先锋

java大文件复制最高效方法:多线程FileChannel

admin 102 80

单线程下现在主流的复制方法有以下几种:

1、FileChannel方法

2、FileInputStream

3、BufferedOutputStream

4、BufferedReader

5、FileReader

本文以一个998M大小的mp4文件来测试

1单线程下FileChannel

测试方法:

复制完成时间:time=717ms

2多线程FileChannel

测试方法:

结果:

开始时间:06

开始时间:06

开始时间:06

开始时间:06

Thread-1-结束时间:14-共用时:208ms

Thread-3-结束时间:18-共用时:212ms

Thread-2-结束时间:18-共用时:212ms

Thread-0-结束时间:19-共用时:213ms

复制完成时间取最大结束时间与开始时间的差值213ms,比单线程下的717ms提升的不只一点点。

综上所述,FileChannel配合多线程来进行大文件的复制操作是最高效的(仅代表个人意见),各位大佬有更好的更高效的方法欢迎评论