文件夹的复制(文件的递归加IO流的文件读写 )

文件递归的升级版大致思想和文件的递归相同 文件递归参考前一章

package com.file;

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

/**
 * 复制 文件夹 将 文件夹D:/paidashi中的所有文件和文件夹复制到
 * 文件夹D:/paidashi2中
 * 
 * @author Administrator
 *
 */
public class TestB {
	public static void dg(File f, File ff) throws Exception {
		// 判断 必须 ff不存在 而且 f是文件夹才创建
		if (!ff.exists() && f.isDirectory()) {
			ff.mkdirs();
		}
		// 判断是否 存在
		if (f.exists()) {
			// 判断是否为空
			if (!f.equals(null)) {
				// 判断 是否文件夹 是就打开 不是 就 复制
				if (f.isDirectory()) {
					// 得到 所有的 File文件
					File[] lf = f.listFiles();
					for (File k : lf) {
						// 得到文件的 绝对路径
						String s = k.getAbsolutePath();
						// 截取 后面相同的部分
						String ns = s.substring(11, s.length());
						// 拼到一块 然后 得到一个新的字符串
						String nss = "D:/paidashi2" + ns;
						// 利用新的字符串 创建成 新的 文件
						File n = new File(nss);
						// 调用递归 传入 f的文件 和新文件
						dg(k, n);
					}
				} else {
					// 流 复制
					FileInputStream fi = new FileInputStream(f);
					FileOutputStream fo = new FileOutputStream(ff);
					byte[] b = new byte[1024];
					int a = 0;
					while ((a = fi.read(b)) != -1) {
						fo.write(b);
						fo.flush();
					}
					fo.close();
					fi.close();
				}
			}
		} else {
			System.out.println("不存在");
		}
	}

	public static void main(String[] args) throws Exception {
		dg(new File("D:/paidashi"), new File("D:/paidashi2"));
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值