Java复制多级文件夹
整理一下思路:
- 首先创建文件源和目标文件夹File对象
- 调用文件夹复制方法copyFolder()
- 编写copyFolder()方法
- 如果文件源是文件夹则在目标文件夹的基础上创建一个新的File对象(newFile)
- 遍历文件源获取File对象(file),调用copyFolder(file,newFile)
- 如果是文件,则直接复制
- 如果文件源是文件夹则在目标文件夹的基础上创建一个新的File对象(newFile)
- 编写copyFolder()方法
package com.wanwan;
import java.io.*;
public class Demo05 {
public static void main(String[] args) throws IOException {
File f1 = new File("文件源路径");
File f2 = new File("目标路径");
copyFolder(f1,f2);
}
private static void copyFolder(File f1, File f2) throws IOException {
if(f1.isDirectory()){
File f3 = new File(f2,f1.getName());
//创建目录时一定要判断该目录是否存在
if(!f3.exists()){
f3.mkdirs();
}
File[] files = f1.listFiles();
for(File f : files){
copyFolder(f,f3);
}
}
if(f1.isFile()){
//复制文件时要先创建要复制的文件对象,然后再复制文件
File f3 = new File(f2,f1.getName());
copyFile(f1,f3);
}
}
private static void copyFile(File f1, File f2) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f1));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f2));
byte[] bys = new byte[1024];
int len = 0;
while((len = bis.read(bys)) != -1){
bos.write(bys,0,len);
}
bos.close();
bis.close();
}
}