文件复制是一个很常用的操作,由于工作上的需要经常会备份很大的log文件。一般都会在100MB以上,所以需要快度复制机制。原来常用的方法都是去按字节去读取,代码比较复杂和不高效。在nio包里面,利用FileChannel机制复制超大文件是一个比较安全的方式。经过项目测试基本没有问题,而且效率很高。
由于时间关系我没有去和读取字节复制的方式比较性能,只是为了代码简洁和安全的角度进行编码。
欢迎大家评论。

    private void copyFile(File in, File out) throws Exception{
        FileChannel sourceChannel
= new FileInputStream(in).getChannel();
        FileChannel destinationChannel
= new FileOutputStream(out).getChannel();
        sourceChannel.transferTo(
0, sourceChannel.size(), destinationChannel);
        
// or
        
// destinationChannel.transferFrom(sourceChannel, 0,
        
// sourceChannel.size());
        sourceChannel.close();
        destinationChannel.close();
        sourceChannel
= null;
        destinationChannel
= null;
    }