java文件夹拷贝
package com.qf.h_homework;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 文件夹拷贝----递归
*/
public class CopyFolderTest {
public static void main(String[] args) throws IOException {
//参数1: 原目录 参数2: 目标目录
copyFolder(new File("b"), new File("c"));
}
public static void copyFolder(File sourceDir,File targetDir) throws IOException{
//1.到目标文件夹看有没有对应的文件夹--
File dir = new File(targetDir, sourceDir.getName()); //b/a/aaa
//2.如果没有就创建--
if(!dir.exists()){
dir.mkdirs();
}
//3.遍历sourceDir--
File[] files = sourceDir.listFiles();
for(File file : files){
//4.判断是否是文件夹类型,如果是--调用方法自身
if(file.isDirectory()){
copyFolder(file, dir); //a/aaa b/a
}else{
//5.如果不是,拷贝文件到目标文件夹 a/b.txt b/a/b.txt
copyFile(file, new File(dir,file.getName()));
}
}
}
public static void copyFile(File source,File target) throws IOException{
BufferedInputStream bi = new BufferedInputStream(new FileInputStream(source));
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(target));
byte[] bs = new byte[1024];
int len;
while((len=bi.read(bs))!=-1){
bo.write(bs, 0, len);
}
bo.close();
bi.close();
}
}