diff --git a/src/main/java/org/codehaus/plexus/util/FileUtils.java b/src/main/java/org/codehaus/plexus/util/FileUtils.java index 40c063a9..a038d0b0 100644 --- a/src/main/java/org/codehaus/plexus/util/FileUtils.java +++ b/src/main/java/org/codehaus/plexus/util/FileUtils.java @@ -1104,6 +1104,16 @@ public static void copyFile( final File source, final File destination ) private static void doCopyFile( File source, File destination ) throws IOException + { + // offload to operating system if supported + if ( Java7Detector.isJava7() ) + doCopyFileUsingNewIO( source, destination ); + else + doCopyFileUsingLegacyIO( source, destination ); + } + + private static void doCopyFileUsingLegacyIO( File source, File destination ) + throws IOException { FileInputStream fis = null; FileOutputStream fos = null; @@ -1141,6 +1151,12 @@ private static void doCopyFile( File source, File destination ) } } + private static void doCopyFileUsingNewIO( File source, File destination ) + throws IOException + { + NioFiles.copy( source, destination ); + } + /** * Copy file from source to destination only if source timestamp is later than the destination timestamp. * The directories up to destination will be created if they don't already exist.