• IO流(10)复制多级文件夹


    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;

    /*
    * 需求:复制多极文件夹
    *
    * 数据源:E:JavaSEday21codedemos
    * 目的地:E:\
    *
    * 分析:
    * A:封装数据源File
    * B:封装目的地File
    * C:判断该File是文件夹还是文件
    * a:是文件夹
    * 就在目的地目录下创建该文件夹
    * 获取该File对象下的所有文件或者文件夹File对象
    * 遍历得到每一个File对象
    * 回到C
    * b:是文件
    * 就复制(字节流)
    */
    public class CopyFoldersDemo {
      public static void main(String[] args) throws IOException {
        // 封装数据源File
        File srcFile = new File("E:\JavaSE\day21\code\demos");
        // 封装目的地File
        File destFile = new File("E:\");

        // 复制文件夹的功能
        copyFolder(srcFile, destFile);
      }

      private static void copyFolder(File srcFile, File destFile) throws IOException {
        // 判断该File是文件夹还是文件
        if (srcFile.isDirectory()) {
          // 文件夹
          File newFolder = new File(destFile, srcFile.getName());
          newFolder.mkdir();

          // 获取该File对象下的所有文件或者文件夹File对象
          File[] fileArray = srcFile.listFiles();
          for (File file : fileArray) {
            copyFolder(file, newFolder);
          }
         } else {
           // 文件
          File newFile = new File(destFile, srcFile.getName());
          copyFile(srcFile, newFile);
        }
      }

      private static void copyFile(File srcFile, File newFile) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));

        byte[] bys = new byte[1024];
        int len = 0;
        while ((len = bis.read(bys)) != -1) {
          bos.write(bys, 0, len);
        }

        bos.close();
        bis.close();
      }
    }

  • 相关阅读:
    集成服务监控器green.monitor发布
    细说Angular ngclass
    利用Travis CI 让你的github项目持续构建(Node.js为例)
    CSV和集合对象基于Annotation操作封装
    【HeadFirst 设计模式学习笔记】4 工厂模式
    【HeadFirst 设计模式学习笔记】5 单例模式
    【面向对象设计基础】常量数据管理器
    【面向对象设计基础】存取方法+Private类成员和方法
    【HeadFirst 设计模式学习笔记】3 装饰模式
    【HeadFirst 设计模式学习笔记】2 观察者模式
  • 原文地址:https://www.cnblogs.com/qinjf/p/8284450.html
Copyright © 2020-2023  润新知