public static void copy(File source, File dest) throws IOException { FileChannel in = null, out = null; try { in = new FileInputStream(source).getChannel(); out = new FileOutputStream(dest).getChannel(); in.transferTo( 0, in.size(), out); } finally { if (in != null) { in.close(); } if (out != null){ out.close(); } } } public static void xCopyDir(String sourceFolder, String destinyFolder) throws IOException{ if (!new File(sourceFolder).isDirectory()){ throw new IOException("Source Directory error "); } boolean success = (new File(destinyFolder)).mkdirs(); if (!new File(destinyFolder).isDirectory()){ throw new IOException("Destini Directory error "); } copyRecursiveDir(sourceFolder, destinyFolder); } private static void copyRecursiveDir(String sourceFolder, String destinyFolder) throws IOException{ File file; String list[]; file = new File(sourceFolder); if (file.isDirectory()) { list = file.list(); for (int i = 0; i < list.length; i++){ if ( !new File(sourceFolder + File.separatorChar + list[i]).isFile()){ boolean success = (new File(destinyFolder + File.separatorChar + list[i])).mkdirs(); } copyRecursiveDir(sourceFolder + File.separatorChar + list[i], destinyFolder + File.separatorChar + list[i]); } } if(new File(sourceFolder).isFile()){ copy(new File(sourceFolder), new File(destinyFolder) ); } }