FileChannel inChannel = new FileInputStream( in ).getChannel();
FileChannel outChannel = new FileOutputStream(out).getChannel();
try {
// inChannel.transferTo(0, inChannel.size(), outChannel);
// original -- apparently has trouble copying large files on Windows
// magic number for Windows, 64Mb - 32Kb)
int maxCount = (64 * 1024 * 1024) - (32 * 1024);
long size = inChannel.size();
long position = 0;
while (position < size) {
//
position += inChannel.transferTo(position, maxCount, outChannel);
}
} finally {
if (inChannel != null) {
//
inChannel.close();
}
if (outChannel != null) {
//
outChannel.close();
}
}
}
}
来源: http://www.bubuko.com/infodetail-2483953.html