复制文件夹程序

今天有朋友问我这个问题,以前学的时候貌似也没写过,所以试试刀,看快不快落。


package com.brofe.test;

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

/**
 * 复制文件夹
 * 
 * @author [email protected]
 * @since 2009/06/11
 */
public class CopyDirUtil {
	
	private CopyDirUtil() {}
	
	/**
	 * 复制文件夹
	 * 
	 * @param srcDir 需要复制的文件夹路径
	 * @param destDir 复制到的目标文件夹路径
	 */
	public static void copy (final String srcDir, final String destDir) throws Exception {
		File src = null;
		File dest = null;
		
		try {
			src = new File(srcDir);
			if (!src.exists()) {
				throw new NullPointerException("需要复制的文件夹不存在");
			}
			dest = new File(destDir);
			if (!dest.exists()) {
				dest.mkdir(); // 只有第一次才会执行
			}
			
			File[] srcs = src.listFiles();
			for (File file : srcs) {
				if (!file.isDirectory()) { // 如果是文件
					copyFile(file.toString(), destDir + File.separator + file.getName());
				} else { // 如果是目录
					copy(file.getPath(), destDir + File.separator + file.getName());
				}
			}
			
		} catch (Exception e) {
			throw new Exception("copy dir error...");
		} 
	}
	
	/**
	 * 复制单个文件的工具文法
	 * @param srcFilePath
	 * @param destFilePath
	 * @throws IOException
	 */
	private static void copyFile (String srcFilePath, String destFilePath) throws IOException {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		byte[] buffer = null;
		try {
			fis = new FileInputStream(srcFilePath);
			fos = new FileOutputStream(destFilePath);
			buffer = new byte[1024];
			int count = 0;
			while ((count = fis.read(buffer)) != -1) {
				fos.write(buffer, 0, buffer.length);
			}
		} finally {
			if (fis != null)
				fis.close();
			if (fos != null) 
				fos.close();
			if (buffer != null) 
				buffer = null;
		}
	}
	
	public static void main(String[] args) throws Exception {
		CopyDirUtil.copy("e:\\oldpath", "e:\\newpath");
	}
	
}

你可能感兴趣的:(java)