Skip to content

Instantly share code, notes, and snippets.

@wfwei
Created May 16, 2012 06:58
Show Gist options
  • Save wfwei/2708183 to your computer and use it in GitHub Desktop.
Save wfwei/2708183 to your computer and use it in GitHub Desktop.
use nio to fast copy file
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 )
{
&
nbsp; position += inChannel.transferTo( position, maxCount, outChannel );
}
}
finally
{
if (
inChannel != null )
{
&
nbsp; inChannel.close();
}
if ( outChannel != null )
{
&
nbsp; outChannel.close();
}
}
}
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