File 类递归练习,拷贝。

public class digui {
/*


* 需求3:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
*
*/
public static void main(String[] args) throws Exception {
File src = getDir();// 获取文件夹路径
File desc = getDir();
if (src.equals(desc)) {
System.out.println("目标文件夹是源文件夹的子文件夹");
} else {
copy(src, desc);
}
}

public static void copy(File src, File dest) throws Exception {
// 1.在目标文件夹中创建需要拷贝的文件夹
File newDir = new File(dest, src.getName());
newDir.mkdir();
// 2.获取被拷贝的文件夹中所有的文件和文件夹,存储在File数组中
File[] subFile = src.listFiles();
// 3.遍历
for (File subFile1 : subFile) {
if (subFile1.isFile()) { // 判断是文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile1));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(newDir, subFile1.getName())));
int b;
while ((b = bis.read()) != -1) {
bos.write(b);
}
} else {
copy(subFile1, newDir); // 如果是文件就递归调用
}
}
}

 

}

posted @ 2020-07-13 21:24  一块  阅读(175)  评论(0编辑  收藏  举报