//拷贝文件夹
//将file1文件夹中的数据拷贝到文件夹file2中
public class FileDemo1 {
public static void main(String[] args) throws IOException {
//拷贝文件夹
//将file1文件夹中的数据拷贝到文件夹file2中
File file1 = new File("D:\\file.files\\InterlliJ IDEA\\JavaBase\\javaBase\\IOFiles");
File file2 = new File("D:\\file.files\\InterlliJ IDEA\\JavaBase\\javaBase\\test");
copydirs(file1,file2);
}
private static void copydirs(File file1, File file2) throws IOException {
//如果文件夹2不存在,就创建
file2.mkdirs();
File[] files = file1.listFiles();
//遍历文件夹1中的文件
for (File file : files) {
//如果是文件直接拷贝
if(file.isFile()){
int len;
//一次拷贝1M
byte[] b = new byte[1024];
FileInputStream fis = new FileInputStream(file);
//关键:如果文件夹2中不存在文件,先创建文件
FileOutputStream fos = new FileOutputStream(new File(file2,file.getName()));
while ((len = fis.read(b))!=-1){
//将b数组写出到文件中,从0开始,长度为len
fos.write(b,0,len);
}
//关闭流,先开的后关闭
fos.close();
fis.close();
}else{
//如果读到的是文件夹,则递归调用,继续读取
copydirs(file,new File(file2,file.getName()));
}
}
}
}