public static void copyDirectoryToDirectory(File src,File dest) throws IOException {
/*
* 思路:
* 1: 在目的地文件夹下创建一个和数据源文件夹名字一样的 文件夹(新的目的地文件夹).
* File newDir = new File(dest,src.getName());
* 2: 获取到数据源文件夹(src)下所有的File[]
* 3: 遍历File[],获取到每一个File对象,然后判断
* 是文件夹: 就递归
* 是文件: 就复制, 注意保持文件名要一致
*/
File newDir = new File(dest,src.getName());
if (!newDir.exists()) { //如果新的目的地文件夹不存在,就创建
newDir.mkdir();
}
//2
File[] subFiles = src.listFiles();
for (File subFile : subFiles) { //subFile就是数据源文件夹下的某一个文件(夹)
//换言之,我们是要把 subFile,复制到 newDir(是文件夹)中 (重点)
if (subFile.isDirectory()) {
//是文件夹: 就递归
copyDirectoryToDirectory(subFile, newDir); //细节,时刻注意方法的参数是谁
}else {
//是文件: 就复制, 注意保持文件名要一致
//D:\测试\src\BaiduYunGuanjia\BaiduYunGuanjia.exe
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
//细节,重点注意的地方
File newFile = new File(newDir,subFile.getName()); //在目的地文件夹下创建一个和 数据源文件名字一模一样的文件
BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream(newFile));
int len = 0;
while((len = bis.read()) != -1) {
bos.write(len);
}
bis.close();
bos.close();
}
}
} |