code: public static void copyDirectory(File srcDir, File destDir,
        boolean preserveFileDate) throws IOException {
      copyDirectory(srcDir, destDir, null, preserveFileDate);
    }
docs: Copies a whole directory to a new location.
  <p>
  This method copies the contents of the specified source directory
  to within the specified destination directory.
  <p>
  The destination directory is created if it does not exist.
  If the destination directory did exist, then this method merges
  the source with the destination, with the source taking precedence.
  <p>
  <strong>Note:</strong> Setting <code>preserveFileDate</code> to
  <code>true</code> tries to preserve the files' last modified
  date/times using {@link File#setLastModified(long)}, however it is
  not guaranteed that those operations will succeed.
  If the modification operation fails, no indication is provided.
  
  @param srcDir  an existing directory to copy, must not be <code>null</code>
  @param destDir  the new directory, must not be <code>null</code>
  @param preserveFileDate  true if the file date of the copy
  should be the same as the original
  
  @throws NullPointerException if source or destination is <code>null</code>
  @throws IOException if source or destination is invalid
  @throws IOException if an IO error occurs during copying
  @since 1.1