解题思路
先复制一级文件夹里的内容,如果是文件夹就创建文件夹,如果是文件就创建文件。然后递归调用,就是再重复复制一级文件夹里的内容,如果是文件夹就创建文件夹,如果是文件就创建文件
package io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class CopyFile2 {
public static void main(String[] args) throws Exception {
File src = new File("D:\\hello");
File dest = new File("D:\\world");
f(src,dest);
}
public static void f( File f, File f1) throws Exception { //参数是源文件,目标文件
File newFolder = new File( f1 , f.getName()); //在目标文件下创建文件夹
if( f.isDirectory()) {//文件夹,目录
newFolder.mkdirs();
File [] fileArray = f.listFiles();
for( File file : fileArray) {
f( file , newFolder);
}
}else {//文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFolder));
byte [] b = new byte[1024];
int i =bis.read(b);
while( i != -1) {
bos.write(b);
i = bis.read(b , 0 , b.length);
}
bos.close();
bis.close();
}
}
}