将指定目录(包含内容)复制到另一个目录中

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 
 * 源目录		目标目录
 * 
 * 
 * 分析:
 * 		首先我们要获取源目录下所有的文件和子目录,
 * 				我们可以把源目录封装成一个File对象,
 * 				我们可以调用File类listFiles()方法,
 * 				我们可以获取源目录下所有的文件和子目录所对应的File对象。
 * 		如果我们获取到的是文件
 * 				先在目标目录中创建该文件所对应的目录,
 * 				进行文件的复制。
 * 		如果我们获取到的是子目录
 * 				看看子目录下面是否还有其他的文件和更深层次的子目录
 * 
 * 
 * 

 */
public class RecurrenceTest3 {
	public static void main(String[] args) throws IOException {
		// 源目录
		File src = new File("E:\\ceshi");
		// 目标目录
		File dest = new File("E:\\ceshi222");

		copyDir(src, dest);

	}

	public static void copyDir(File src, File dest) throws IOException {
		// 为了严谨起见,我们首先对源目录和目标目录进行判断,看他们到底是不是目录
		if (src.isDirectory() && dest.isDirectory()) {

			File newDir = new File(dest, src.getName());
			if (!newDir.exists()) {
				newDir.mkdir();
			}
			
			//获取源目录下所有的文件和子目录
			File[] files = src.listFiles();
			
			for (File file : files) {
				if(file.isFile()) {
					//创建字节输入流对象
					FileInputStream fis = new FileInputStream(file);
					//创建字节输出流对象
					FileOutputStream fos = new FileOutputStream(new File(newDir,file.getName()));
					
					int len;
					byte[] by = new byte[1024];
					while((len=fis.read(by)) != -1) {
						fos.write(by, 0, len);
					}
					fis.close();
					fos.close();
				}
				else if(file.isDirectory()) {
					copyDir(file,newDir);
				}
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/ludadan/article/details/79947017