Here you can find the source of copyFolder(File sF, File tF)
public static void copyFolder(File sF, File tF) throws IOException
/**//from w w w. j ava 2 s . c o m * Copyright 2009 Welocalize, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.log4j.Logger; public class Main{ public static void copyFolder(File sF, File tF) throws IOException { String sP = sF.getAbsolutePath().replace("\\", "/"); String tP = tF.getAbsolutePath().replace("\\", "/"); List<File> alls = getAllFiles(sF); for (File f : alls) { String path = f.getAbsolutePath().replace("\\", "/"); path = path.replace(sP, tP); copyFile(f, new File(path)); } } /** * Gets all files under the specified fold. * * @param root * the specified fold * @return A list includes all files under the specified fold. */ public static List<File> getAllFiles(File root) { return getAllFiles(root, null); } /** * Gets all files under the specified fold. * * @param root * the specified fold * @return A list includes all files under the specified fold. */ public static List<File> getAllFiles(File root, FileFilter filter) { Assert.assertFileExist(root); List<File> files = new ArrayList<File>(); if (root.isFile()) { if (filter == null || filter.accept(root)) { files.add(root); } } else { File[] fs = root.listFiles(); for (File f : fs) { files.addAll(getAllFiles(f, filter)); } } return files; } /** * Copies one file to a specified file. * * @param src * @param dst * @throws IOException * @throws Exception */ public static void copyFile(File src, File dst) throws IOException { File parent = dst.getParentFile(); if (!parent.exists()) { parent.mkdirs(); } FileInputStream fis = null; FileOutputStream fos = null; try { int len = 0; byte[] buf = new byte[1024]; fis = new FileInputStream(src); fos = new FileOutputStream(dst); while ((len = fis.read(buf)) != -1) { fos.write(buf, 0, len); } fos.flush(); } finally { if (fis != null) { fis.close(); } if (fos != null) { fos.close(); } } } }