java实现多级文件夹的复制

source:有一个文件夹,文件夹下有又目录也有文件,将该文件夹下的所有文件以及目录复制到目的文件夹

思路:
(1)创建一个数据源文件夹对象
(2)创建一个目的地文件夹对象
(3)判断数据源文件是否为目录

    • 在目的文件夹下创建和数据源file名称一样的目录
    • 获取数据源file下所有文件或者目录的file数组
    • 遍历该file数组,得到每一个file对象
    • 把该file对象当做数据源file对象,递归调用复制文件夹的方法
  • 不是
    • 直接复制
import java.io.*;

public class duojifile {
    public static void main(String[] args) throws IOException {


        File sourfile = new File("D:\\datainto_test");

        File destfile = new File("F:\\");

        //实现文件夹的复制
        copyFolder(sourfile,destfile);
    }

    private static void copyFolder(File sourfile, File destfile) throws IOException {

        if (sourfile.isDirectory()){
            String sname = sourfile.getName();
            File newfile = new File(destfile,sname);
            if (!newfile.exists()){
                newfile.mkdir();
            }
            File[] files = sourfile.listFiles();
            for (File file:files){
                copyFolder(file,newfile);
            }
        }else {
            File newFile =new File(destfile,sourfile.getName());
            copyFile(sourfile,newFile);
        }


    }


    public static void copyFile(File f1,File f2) throws IOException {
        BufferedInputStream bfi = new BufferedInputStream(new FileInputStream(f1));
        BufferedOutputStream bfw = new BufferedOutputStream(new FileOutputStream(f2));

        int len;
        byte [] bt = new byte[1024];
        while ((len = bfi.read(bt))!=-1){
            bfw.write(bt);
        }
    }
} 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值