Skip to content

Instantly share code, notes, and snippets.

@ggzeng
Created January 21, 2024 09:35
Show Gist options
  • Save ggzeng/fddedaa95c1d7463b77ab58bc18b19f6 to your computer and use it in GitHub Desktop.
Save ggzeng/fddedaa95c1d7463b77ab58bc18b19f6 to your computer and use it in GitHub Desktop.
public static void fileCopy( File in, File out )
throws IOException
{
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();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment