code: public static boolean copyFile(File source, File dest) {
  		// if(!source.renameTo(new File(dest,source.getName()))) {
  		// return false;
  		// } else {
  		// return true;
  		// }
  		try {
  			FileInputStream in = new FileInputStream(source);
  			FileOutputStream out = new FileOutputStream(dest);
  			try {
  				FileChannel canalFuente = in.getChannel();
  				FileChannel canalDestino = out.getChannel();
  //				canalFuente.transferTo(0, canalFuente.size(), canalDestino);
  				
  				long count = 0;
  				long size = canalFuente.size();
  				while ((count += canalDestino.transferFrom(canalFuente, count,
  						size - count)) < size)
  					;
  			        
  			} catch (IOException e) {
  				log.error("copiando ficheros orig:'" + source.getAbsolutePath()
  						+ "' destino:'" + dest.getAbsolutePath() + "'", e);
  				return false;
  			} finally {
  //				try {
  //					in.close();
  //				} catch (IOException e) {
  //				}
  //				try {
  //					out.close();
  //				} catch (IOException e) {
  //				}
  				IOUtils.closeQuietly(in);
  				IOUtils.closeQuietly(out);
  			}
  		} catch (FileNotFoundException e) {
  			log.error("copiando ficheros orig:'" + source.getAbsolutePath()
  					+ "' destino:'" + dest.getAbsolutePath() + "'", e);
  			return false;
  		}
  		return true;
  	}
docs: Copia un archivo a un directorio
  
  @param source
  @param dest
  @return true si va bien, false si falla