文件递归的升级版大致思想和文件的递归相同 文件递归参考前一章
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"));
}
}