使用IO流 复制整个文件夹的方法

今天学习遇到的一个小作业,
利用刚刚学习的IO流将一个位置的文件夹中所有文件
复制到另外一个文件夹中

思路:
判断 即将 复制的文件是文件夹还是文件
遍历需要复制的源文件夹
如果是文件夹,就通过流创建一个同样的子文件夹
如果是文件,就复制过去
接下来上代码:

 public static void main(String[] args) {
        //复制粘贴整个文件夹

        String copy="D:/Test";
        String Paste="D:/Test1";

        //参数   (复制的源文件夹  , 粘贴的文件夹)
        copyDir(copy,Paste);
        //如果被粘贴位置有该文件,文件将会覆盖
    }

   //复制整个文件夹的方法
    public static void copyDir(String formDir,String toDir){
        try {
            //创建目录的File对象
            File file_copy=new File(formDir);
            //判断如果它是不是一个目录
            if(!file_copy.isDirectory()){
                //不是目录就不复制
                    return;
            }
            //创建目录的对象
            File file_paste=new File(toDir);
            //如果目录不存在
            if(!file_paste.exists()){
                file_paste.mkdir();
                //创建目录
            }
            //获取源目录下的File对象列表
            File[] files=file_copy.listFiles();
            for(File file:files){
                //遍历里面的对象
                //且拼接起来
                String strForm=formDir+File.separator+file.getName();
                System.out.println("需要复制的文件"+strForm);
                String strTo=toDir+File.separator+file.getName();
                System.out.println("粘贴下来的文件"+strTo+"\n");

                //判断是目录还是文件
                //判断是否是目录
                if(file.isDirectory()){
                    //递归复制目录方法
                    copyDir(strForm,strTo);
                }
                //判断是否是文件
                if(file.isFile()){
                    //是文件,就进行复制
                    System.out.println("正在进行复制文件"+file.getName());
                    copy(strForm,strTo);
                }
            }
        } catch (IOException e) {
            System.out.println("出现错误可能是拷贝的文件不存在");
            e.printStackTrace();
        }
    }

    //复制文件方法
    public static void copy(String sbr,String sbw) throws IOException {
        BufferedReader br=new BufferedReader(new FileReader(sbr));
        BufferedWriter bw=new BufferedWriter(new FileWriter(sbw));
        String a=null;
        while ((a=br.readLine())!=null){
            bw.write(a);//输出
            bw.newLine();//换行
        }
        IOUtils.closeAll(bw,br);
    }

十分简单的代码
仅供参考,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值