//复制多级文件夹(递归)
public class MoreCopyFile {
public static void main(String[] args) throws IOException {
//源文件
File oldfile=new File("D:\\360安全浏览器下载");
//目标文件
File newfile=new File("D:\\360复制");
//判断目标文件是否存在
if(!newfile.exists()){
newfile.mkdir();//创建目标文件
}
long star=System.currentTimeMillis();//开始时间
moreCopyFile(oldfile,newfile);
long end=System.currentTimeMillis();//结束时间
System.out.println("复制花费"+(end-star)/1000+"秒");
}
//判断当前文件对象是否为目录,如果是目录继续递归,不是目录直接复制到目标文件
public static void moreCopyFile(File oldfile,File newfile) throws IOException{
//判断是否为目录
if(oldfile.isDirectory()){
//获取当前文件下的所有的file数组
File[] files=oldfile.listFiles();
//遍历并判断 复制不是目录的文件到目标文件
for (File file : files) {
if(file.isDirectory()!=true){
String name=file.getName();
File newfiles=new File(newfile,name);
copy(file,newfiles);
}
}
//新建一个当前文件下的所有的file数组,用来递归是目录的file对象
File[] files2=oldfile.listFiles();
//遍历files2数组 递归每一个是目录的file对象
for (File file3 : files2) {
if(file3.isDirectory()){
moreCopyFile(file3,newfile);
}
}
}
}
//创建输入输出流方法用来复制
public static void copy(File f1,File f2) throws IOException{
BufferedInputStream in=new BufferedInputStream(new FileInputStream(f1));
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(f2));
byte[] b=new byte[1024];
int i=0;
while((i=in.read(b))!=-1){
out.write(b);
}
in.close();
out.close();
}
}
如有错误,还望指正,谢谢!!!