Java tutorial
//package com.java2s; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class Main { public static boolean copyFilesTo(File srcDir, File destDir) throws IOException { if (srcDir == null || destDir == null) { return false; } if (!srcDir.exists()) { return false; } if (!destDir.exists()) { createFolder(destDir.getAbsolutePath()); } if (!srcDir.isDirectory() || !destDir.isDirectory()) return false; File[] srcFiles = srcDir.listFiles(); for (int i = 0; i < srcFiles.length; i++) { if (srcFiles[i].isFile()) { File destFile = new File(destDir.getPath() + "//" + srcFiles[i].getName()); copyFileTo(srcFiles[i], destFile); } else if (srcFiles[i].isDirectory()) { File theDestDir = new File(destDir.getPath() + "//" + srcFiles[i].getName()); copyFilesTo(srcFiles[i], theDestDir); } } return true; } public static File createFolder(String path) { if (notEmptyOrNull(path)) { File dir = new File(path); if (dir.exists()) { if (dir.isDirectory()) { return dir; } } dir.mkdirs(); return dir; } else { return null; } } public static boolean copyFileTo(File srcFile, File destFile) throws IOException { if (srcFile == null || destFile == null) { return false; } if (srcFile.isDirectory() || destFile.isDirectory()) return false; if (!srcFile.exists()) { return false; } if (!destFile.exists()) { createFile(destFile.getAbsolutePath()); } FileInputStream fis = new FileInputStream(srcFile); FileOutputStream fos = new FileOutputStream(destFile); int readLen = 0; byte[] buf = new byte[1024]; while ((readLen = fis.read(buf)) != -1) { fos.write(buf, 0, readLen); } fos.flush(); fos.close(); fis.close(); return true; } public static boolean copyFileTo(InputStream inputStream, File destFile) throws IOException { if (inputStream == null || destFile == null) { return false; } if (destFile.isDirectory()) return false; if (!destFile.exists()) { createFile(destFile.getAbsolutePath()); } FileOutputStream fos = new FileOutputStream(destFile); int readLen = 0; byte[] buf = new byte[1024]; while ((readLen = inputStream.read(buf)) != -1) { fos.write(buf, 0, readLen); } fos.flush(); fos.close(); inputStream.close(); return true; } public static boolean notEmptyOrNull(String string) { if (string != null && !string.equalsIgnoreCase("null") && string.trim().length() > 0) { return true; } else { return false; } } public static File createFile(String path) throws IOException { if (notEmptyOrNull(path)) { File file = new File(path); if (!file.exists()) { int lastIndex = path.lastIndexOf(File.separator); String dir = path.substring(0, lastIndex); if (createFolder(dir) != null) { file.createNewFile(); return file; } } else { file.createNewFile(); return file; } } return null; } }