source:有一个文件夹,文件夹下有又目录也有文件,将该文件夹下的所有文件以及目录复制到目的文件夹
思路:
(1)创建一个数据源文件夹对象
(2)创建一个目的地文件夹对象
(3)判断数据源文件是否为目录
- 是
- 在目的文件夹下创建和数据源file名称一样的目录
- 获取数据源file下所有文件或者目录的file数组
- 遍历该file数组,得到每一个file对象
- 把该file对象当做数据源file对象,递归调用复制文件夹的方法
- 不是
- 直接复制
import java.io.*;
public class duojifile {
public static void main(String[] args) throws IOException {
File sourfile = new File("D:\\datainto_test");
File destfile = new File("F:\\");
//实现文件夹的复制
copyFolder(sourfile,destfile);
}
private static void copyFolder(File sourfile, File destfile) throws IOException {
if (sourfile.isDirectory()){
String sname = sourfile.getName();
File newfile = new File(destfile,sname);
if (!newfile.exists()){
newfile.mkdir();
}
File[] files = sourfile.listFiles();
for (File file:files){
copyFolder(file,newfile);
}
}else {
File newFile =new File(destfile,sourfile.getName());
copyFile(sourfile,newFile);
}
}
public static void copyFile(File f1,File f2) throws IOException {
BufferedInputStream bfi = new BufferedInputStream(new FileInputStream(f1));
BufferedOutputStream bfw = new BufferedOutputStream(new FileOutputStream(f2));
int len;
byte [] bt = new byte[1024];
while ((len = bfi.read(bt))!=-1){
bfw.write(bt);
}
}
}