310 复制多级文件夹

36 篇文章 0 订阅

310 复制多级文件夹

 

(复杂难懂的课)

(先抄下代码,彻底的理解掌握暂略)

【需求】

复制多级目录

数据源:C:\develper\310

目的地:myCharStream\src\e310

【思路】

(准备)(新建如图文件、文件夹)

  1. 创建 数据源File对象,C:\develper\30
  2. 创建 目的地File对象,myCharStream\src\e310
  3. 定义 方法,实现复制文件
  4. 判断 数据源File是否目录【递归】
    1. 是目录,则-1-复制目录-2-获取listFile数组-3-遍历数组,获取每个File对象-4-对该File对象调用递归方法,再次判断是否目录后地进行处理
    2. 不是目录,则复制该文件

--------------------------------------------------------------

【报错了】FileNotFoundException

【关键语句】

    private static void copyFolder(File srcF, File destF) throws IOException {

        if (srcF.isDirectory()) {

            String srcFileName = srcF.getName();

            File newFolder = new File(destF, srcFileName);

            if (!newFolder.exists()) {

                newFolder.mkdir();

            }

            File[] fileA = srcF.listFiles();

            for (File dataSrc : fileA) {

                copyFolder(dataSrc, newFolder);

            }

        } else {

            File newFolder = new File(destF, srcF.getName());

            copyFile(srcF, destF);

        }

    }

--------------------------------------------------------------

package e310;

import java.io.File;

import java.io.IOException;

public class Prepare {

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

        File f1 = new File("C:\\develper\\310\\ff");

        File f2 = new File("C:\\develper\\310\\ff.jpg");

        File f3 = new File("C:\\develper\\310\\ff.txt");

        System.out.println(f1.mkdirs());

        System.out.println(f2.createNewFile());

        System.out.println(f3.createNewFile());

    }

}

--------------------------------------------------------------

package e310;

import java.io.*;

public class CopyFoldersDemo {

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

        File srcF = new File("C:\\develper\\310");

        File destF = new File("C:\\data");

//共需定义2个方法,分别实现复制目录、复制文件

        copyFolder(srcF, destF);

    }

    private static void copyFolder(File srcF, File destF) throws IOException {

        if (srcF.isDirectory()) {

            String srcFileName = srcF.getName();

            File newFolder = new File(destF, srcFileName);

            if (!newFolder.exists()) {

                newFolder.mkdir();

            }

            File[] fileA = srcF.listFiles();

            for (File dataSrc : fileA) {

                copyFolder(dataSrc, newFolder);

            }

        } else {

            File newFolder = new File(destF, srcF.getName());

            copyFile(srcF, destF);

        }

    }

    private static void copyFile(File srcF, File destF) throws IOException {

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcF));

        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destF));

        byte[] bys = new byte[1024];

        int len;

        while ((len = bis.read()) != -1) {

            bos.write(bys, 0, len);

        }

        bis.close();

        bos.close();

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值