问题描述
利用File 和 FileInputStream 和FileOutputStream实现目录复制
这里我就复制我的项目的IO文件夹
基本思路
利用递归实现目录复制,详细情况见代码
代码如下
package com.lordbao.test;
import java.io.*;
/**
* @Author Lord_Bao
* @Date 2020/9/6 19:50
* @Version 1.0
*
* 将IO目录下的所有文件和目录都复制到IOBAK目录下
*
* 1.判断IOBAK目录是否存在
* 显然 IO目录肯定是存在的,而IOBAK目录则不一定存在
* 所以需要判断IOBAK目录是否存在
*
* 1.首先判断是否存在一个叫IOBAK的文件或是目录 即destFile.exists()
* 如果不存在,则进行递归创建IOBAK目录,为什么是递归创建呢?
* 因为目标目录可能是 xxx/yyy/IOBAK这样的参数,为了程序健壮性,采用递归创建
* 2.如果存在,则需要进一步判断是不是文件 即destFile.isFile
* 如果是文件,由于同名无法创建,那么目标目录必须改为另外一个名字,比如IOBAK(1)。然后递归创建目标目录
* 注意,这里不再考虑IOBAK(1)还存在重名的情况
*
* 其实第1步,自己不要乱设置目标目录就行了。
*
* 2.关于递归函数的参数以及递归终止条件分析如下
* 2.1递归参数
* 首先,第一个参数肯定是等待被复制的目录 即 File sourceFile
* 当然这里传入 等待被复制的目录的路径也可以,没什么区别 即 String sourceFilePath
*
* 其次,第二个参数是第一个参数 File sourceFile下的文件或目录将被复制的目录路径 即 String destPath
*
* 2.2终止条件
* 当sourceFile目录下的都是文件时,递归终止
*/
public class TestCopyDirectoryDemo {
public static void main(String[] args) {
//等待被复制的源目录路径
String sourceDirPath="IO";
//目标目录路径
String destDirPath="IOBAK";
File sourceFile = new