Io opto per questa soluzione:
codice:
public 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);
// oppure
// destinationChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
sourceChannel.close();
destinationChannel.close();
}
sembra più perfomante che utilizzare solo Stream, con read & write 
Alfredo