前两篇我们实现了计算文件夹的大小和删除文件夹,这一篇要实现复制文件夹到另一个文件夹里。
代码如下:
package day01;
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 CopyFile {
public static void main(String[] args) throws IOException {
File src = FileLength.getDir();
File dest = FileLength.getDir();
if (src.equals(dest)) { //这判断必须要写,否则复制A文件夹到A文件夹,会造成死循环,请务必写上此判断。
System.out.println("目标文件夹是源文件夹的子文件夹");
}else {
copyFiles(src, dest);
}
}
public static void copyFiles(File src, File dest) throws IOException {
//1,在目标文件夹中创建原文件夹
File newDir = new File(dest, src.getName());
newDir.mkdir();
//2,获取原文件夹中所有的文件和文件夹,存储在File数组中
File[] subFiles = src.listFiles();
//3,遍历数组
for (File subFile : subFiles) {
//4,如果是文件就用io流读写
if(subFile.isFile()) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));
int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
//5,如果是文件夹就递归调用
}else {
copyFiles(subFile,newDir);
}
}
}
}