文件复制是一个很常用的操作,由于工作上的需要经常会备份很大的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;
}
由于时间关系我没有去和读取字节复制的方式比较性能,只是为了代码简洁和安全的角度进行编码。
欢迎大家评论。
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)