package file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
*
* 需求:复制多级文件夹
* 数据源:
* 目的地:
*
* 分析
* A:封装数据源、
* B:封装目的地
* C:判断该File是文件还是文件夹
* a:是文件夹
* 就在目的地下创建该文件夹
* 获取该File对象的所有文件或者文件夹对象
* 遍历得到每一个File对象
* 回到C
* b:是文件
* 复制文件
*
* */
public class CopyFoldersDemo {
public static void main(String[] args) throws IOException {
File srcFile=new File("D:\\File\\old");
File destFile=new File("D:\\File\\new");
copyFolder(srcFile,destFile);
System.out.println("ok");
}
private static void copyFolder(File srcFile, File destFile) throws IOException {
if(srcFile.isDirectory()){
File newFolder=new File(destFile,srcFile.getName());
newFolder.mkdirs();
File[] fileArray=srcFile.listFiles();
for(File file:fileArray){
copyFolder(file, newFolder);
}
}else{
//File newFile=new File(destFile,srcFile.getName());
File newFile=new File(destFile,srcFile.getName().concat(".sql"));
copyFile(srcFile,newFile);
}
}
private static void copyFile(File srcFile, File newFile) throws IOException{
// TODO Auto-generated method stub
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(newFile));
byte[] bys=new byte[1024];
int len=0;
while((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bos.close();
bis.close();
}
}