zoukankan      html  css  js  c++  java
  • 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();
      }
    }

  • 相关阅读:
    PAT Advanced 1008 Elevator (20) [数学问题-简单数学]
    PAT Advanced 1051 Pop Sequence (25) [栈模拟]
    PAT Basic 完美数列(25) [two pointers]
    PAT Basic 插⼊与归并(25) [two pointers]
    PAT Advanced 1089 Insert or Merge (25) [two pointers]
    第五章 数据的共享和保护
    第四章 面向对象程序设计的基本特点 课堂笔记
    第三章 函数 课堂笔记
    扫描线-Meteor UVALive
    贪心-Stall Reservations POJ
  • 原文地址:https://www.cnblogs.com/qinjf/p/8284450.html
Copyright © 2011-2022 走看看