Here you can find the source of copyDirectory(File source, File destination)
public static final void copyDirectory(File source, File destination) throws IOException
//package com.java2s; //License from project: Open Source License import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel; public class Main { /**/*from w ww . ja v a2s.co m*/ * Recursively copies a directory from source to destination including * all the files within the folders */ public static final void copyDirectory(File source, File destination) throws IOException { if (!source.isDirectory()) { throw new IllegalArgumentException("Source (" + source.getPath() + ") must be a directory."); } if (!source.exists()) { throw new IllegalArgumentException("Source directory (" + source.getPath() + ") doesn't exist."); } destination.mkdirs(); File[] files = source.listFiles(); for (File file : files) { if (file.isDirectory()) { copyDirectory(file, new File(destination, file.getName())); } else { copyFile(file, new File(destination, file.getName())); } } } /** * Copies a file from source to destination */ private static final void copyFile(File source, File destination) throws IOException { FileInputStream inputStream = new FileInputStream(source); FileOutputStream outputStream = new FileOutputStream(destination); FileChannel sourceChannel = inputStream.getChannel(); FileChannel targetChannel = outputStream.getChannel(); sourceChannel.transferTo(0, sourceChannel.size(), targetChannel); sourceChannel.close(); targetChannel.close(); inputStream.close(); outputStream.close(); } }