Java 复制大文件方式(nio2 FileChannel 拷贝文件能力测试)
Java实现文件拷贝评测
JAVA Zero Copy
优先选择Path,MappedByteBuffer ,FileChannel,ByteBuffer
- Files.copy(Path source, Path target, CopyOption... options)
- FileChannel transferTo(long position, long count, WritableByteChannel target)
- FileChannel transferFrom(ReadableByteChannel src, long position, long count)
- MappedByteBuffer put(ByteBuffer src)
下图只是为了看下复制效率,写的有点乱
总结:
- 使用Files.copy()和MappedByteBuffer处理的复制速度很快
- 注意MappedByteBuffer map(MapMode mode, long position, long size)中size最大为Integer.MAX_VALUE,也就是2G ,超过2G的文件就要就不能一次复制完,可使用循环解决这个问题