Here you can find the source of copyDirectory(File from, File to, byte[] buffer)
public static boolean copyDirectory(File from, File to, byte[] buffer)
//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; public class Main { private static final int BUFFER_SIZE = 4096 * 4; /**/*w w w . j a v a 2 s . c om*/ * Copy a directory and all of its contents. * * @param from source file * @param to target file * @return success or failure */ public static boolean copyDirectory(File from, File to) { return copyDirectory(from, to, (byte[]) null); } public static boolean copyDirectory(String from, String to) { return copyDirectory(new File(from), new File(to)); } public static boolean copyDirectory(File from, File to, byte[] buffer) { if (from == null) return false; if (!from.exists()) return true; if (!from.isDirectory()) return false; if (to.exists()) return false; if (!to.mkdirs()) return false; String[] list = from.list(); // Some JVMs return null for File.list() when the directory is empty. if (list != null) { if (buffer == null) buffer = new byte[BUFFER_SIZE]; // return this buffer to copy files for (int i = 0; i < list.length; i++) { String fileName = list[i]; File entry = new File(from, fileName); if (entry.isDirectory()) { if (!copyDirectory(entry, new File(to, fileName), buffer)) { return false; } } else { if (!copyFile(entry, new File(to, fileName), buffer)) { return false; } } } } return true; } public static boolean copyFile(File from, File to, byte[] buf) { if (buf == null) buf = new byte[BUFFER_SIZE]; FileInputStream from_s = null; FileOutputStream to_s = null; try { from_s = new FileInputStream(from); to_s = new FileOutputStream(to); for (int bytesRead = from_s.read(buf); bytesRead > 0; bytesRead = from_s .read(buf)) { to_s.write(buf, 0, bytesRead); } to_s.getFD().sync(); } catch (IOException ioe) { return false; } finally { if (from_s != null) { try { from_s.close(); from_s = null; } catch (IOException ioe) { } } if (to_s != null) { try { to_s.close(); to_s = null; } catch (IOException ioe) { } } } return true; } }