java 复制文件夹

package Copy;

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

/*
 * 复制一个文件夹到另一个文件下
 */
public class Copy {

	public static void main(String[] args) throws IOException {
		File src = new File("E:\\考试代码");
		File dest = new File("D:\\");
		copyFolder(src, dest);
		System.out.println("OK");
	}

	static void copyFolder(File src, File dest) {
		if (src.isDirectory()) {
//			如果目标目录不存在则创建
			if (!dest.exists()) {			
				dest.mkdirs();
			}
//			获取此目录下的文件及目录的名字
			String files[] = src.list();
			for (String file : files) {
				System.out.println(file);
				// 根据(src,dest)父抽象路径名和子路径名字符串(file)创建一个新的实例
				File srcFile = new File(src, file);
				File destFile = new File(dest, file);
				// 递归复制文件
				copyFolder(srcFile, destFile);
			}
		} else {
			// 如果是文件则直接复制
			FileInputStream fis = null;
			FileOutputStream fos = null;
			try {
//				创建输入流,读取文件
				fis = new FileInputStream(src);
//				创建输出流,写入文件
				fos = new FileOutputStream(dest);
				byte[] bs = new byte[1024];
				int count;
				while ((count = fis.read(bs)) != -1) {
					fos.write(bs, 0, count);
					fos.flush();
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {// 关流释放资源
				if (fos != null) {
					try {
						fos.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
				if (fis != null) {
					try {
						fis.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}
}

你可能感兴趣的:(java,IO)