public static void copyRecursive(File sourceDir, File targetDir) throws IOException {
		targetDir.mkdirs();
		for(File f : sourceDir.listFiles()) {
			if(f.isDirectory()) {
				copyRecursive(f, new File(targetDir, f.getName()));
			}
			else {
				FileInputStream fis = new FileInputStream(f);
				FileOutputStream fos = new FileOutputStream(new File(targetDir, f.getName()));			
				pipe(fis, fos);
				fis.close();
				fos.close();
			}
		}
	}