Here you can find the source of copyDirectoryTree(File copyFrom, File copyTo)
public static void copyDirectoryTree(File copyFrom, File copyTo) throws IOException
//package com.java2s; /*//from w w w. j av a 2 s . co m The Martus(tm) free, social justice documentation and monitoring software. Copyright (C) 2001-2007, Beneficent Technology, Inc. (The Benetech Initiative). Martus is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version with the additions and exceptions described in the accompanying Martus license file entitled "license.txt". It is distributed WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, including warranties of fitness of purpose or merchantability. See the accompanying Martus License and GPL license for more details on the required license terms for this software. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. To the extent this copyrighted software code is used in the Miradi project, it is subject to a royalty-free license to members of the Conservation Measures Partnership when used with the Miradi software as specified in the agreement between Benetech and WCS dated 5/1/05. */ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Main { public static void copyDirectoryTree(File copyFrom, File copyTo) throws IOException { if (copyFrom.isDirectory()) { copyTo.mkdirs(); String fileList[] = copyFrom.list(); for (int i = 0; i < fileList.length; i++) { File targetFile = new File(copyTo, fileList[i]); File sourceFile = new File(copyFrom, fileList[i]); copyDirectoryTree(sourceFile, targetFile); } } else { FileInputStream inputStream = new FileInputStream(copyFrom); FileOutputStream outputStream = new FileOutputStream(copyTo); int chararcterToCopy; while ((chararcterToCopy = inputStream.read()) >= 0) outputStream.write(chararcterToCopy); inputStream.close(); outputStream.close(); } } }