复制多级文件夹

复制多级文件夹

  • 需求:把"把D\itCast"这个文件夹复制到模块目录下
  • 思路:
    创建数据源目录File对象,路径是D:\itCast
    获取数据源目录File对象,路径是D:\item\Hellow\src
    写方法实现实现文件文件夹的复制,参数为数据源File对象和目的地File对象
  • 判断File是否为目录
    是:
    A:在目的地下创建和数据源File名称一样的目录
    B:获取数据源File下所有文件或者目录的File数组
    C:遍历该File数组,得到每一个File对象
    D:把该File作为数据源File对象,递归调用复制文件夹的方法

不是:说明是文件,直接复制,用字节流

以代码形式讲解

package Demo;

import java.io.*;
public class Demo {
    public static void main(String[] args) throws IOException {
        //创建数据源目录File对象,路径是D:\\itCast
        File file = new File("D:\\itCast");
        //获取数据源目录File对象,路径是D:\\item\\Hellow\\src
        File file1 = new File("D:\\item\\Hellow\\src");

        //写方法实现实现文件文件夹的复制,参数为数据源File对象和目的地File对象
        copyFolder(file,file1);
    }
    //复制文件夹
    private static void copyFolder(File x,File file1) throws IOException {
        //判断数据源是不是目录
        if (x.isDirectory()){
            //在目的地下创建和数据源File名称一样的目录
            String name = x.getName();
            File file2 = new File(file1, name);//D:\\item\\Hellow\\src\\itCast
            if (!file2.exists()){
                file2.mkdir();
            }
            //获取数据源File下所有目录或者文件的File类数组
            File[] fileArray = x.listFiles();
            for (File file : fileArray) {
                copyFolder(file,file2);
            }
        }else{
            //说明是文件,直接复制,用字节流
            File file = new File(file1, x.getName());
            copyFile(x,file);
        }

    }

    private static void copyFile(File x,File file2) throws IOException {
        //建立字节缓冲输入流
        BufferedInputStream bi = new BufferedInputStream(new FileInputStream(x));

        //建立字节缓冲输出流
        BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(file2));

        //复制文件
        int len;
        byte[] bytes = new byte[1024];
        while((len=bi.read(bytes))!=-1){
            bo.write(bytes, 0, len);
        }

        //释放资源
        bi.close();
        bo.close();
    }
}

输出的内容
柏维怡我爱你
注意内容:

柏维怡我爱你

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发热的嘤嘤怪(2003计科胜胜同学)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值