Java目录拷贝

package com.blb.text7;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Iterator;

public class Demo11 {
	public static void main(String[] args) throws Exception {
		// 拷贝源
		File srcFile = new File("D:\\ShellExt");
		// 拷贝目标
		File destFile = new File("E:\\");
		// 调用方法拷贝
		copyDir(srcFile,destFile);
	}
	/*
	 * 拷贝目录
	 * srcFile 拷贝源
	 * destFile 拷贝目标
	 */
	private static void copyDir(File srcFile, File destFile) throws Exception {
		if (srcFile.isFile()) {
			// srcFile如果是一个文件的话,递归结束
			// 是文件的时候需要拷贝
			// ...一边读一边写
			// 读这个文件
			FileInputStream fis = new FileInputStream(srcFile);
			// 写到这个文件中
			String path = (destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsoluteFile()+"\\") + srcFile.getAbsolutePath().substring(3);;
			FileOutputStream fos = new FileOutputStream(path);
			// 一边读一边写
			byte[] b = new byte[1024 * 1024];
			int readCount=0;
			while ((readCount = fis.read(b))!=-1) {
				fos.write(b,0,readCount);
			}
			fos.close();
			fis.close();
			return;
		}
		// 获取源下面的子目录
		File[] files = srcFile.listFiles();
//		System.out.println(files.length);// 广度搜索
		for (File file : files) {
			// 获取所有文件的(包括目录和文件)绝对路径
//			System.out.println(file.getAbsolutePath());
			if (file.isDirectory()) {
				// 新建对应的目录
//				System.out.println(file.getAbsolutePath());
				// D:\ShellExt\installer 源目录
				// C:\ShellExt\installer 目标目录
				String srcDir = file.getAbsolutePath();
				String destDir = (destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsoluteFile()+"\\") + srcDir.substring(3);
//				System.out.println(destDir);
				File newFile = new File(destDir);
				if(!newFile.exists()) {
					newFile.mkdirs();
				}
			}
			// 递归调用
			copyDir(file, destFile);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值