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:\JavaSE\day21\code\demos
* 目的地: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();
  }
}

IO流(10)复制多级文件夹的更多相关文章

  1. IO流案例:1.复制多级文件夹 2.删除多级文件夹

    package copy; /* 需求:复制多级文件夹 复制d:\\itcast(包含文件和子文件夹)到模块目录下 分析: d:\\itcast a.txt b.txt javaweb a.xml b ...

  2. Java基础知识强化之IO流笔记50:IO流练习之 复制多级文件夹的案例

    1. 复制多级文件夹的案例 需求:复制多级文件夹       数据源:E:\JavaSE\day21\code\demos     目的地:E:\   分析:         A:封装数据源File ...

  3. java中递归实现复制多级文件夹

    常见的流的用法 递归实现复制多级文件夹 FileInputStream & FileOutputStream String content = null;//用来储存解码后的byte数组 in ...

  4. IO流的练习3 —— 复制多级文件夹下的指定文件并改名

    需求:复制指定目录下的指定文件,并修改后缀名. 指定的文件是:.java文件. 指定的后缀名是:.jad 数据源所在文件夹:C:\Users\Administrator\Desktop\记录 目的地所 ...

  5. IO流-复制多极文件夹(递归实现)

    package com.io.test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...

  6. 用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

    每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了 ...

  7. IO流的应用_Copy文件

    IO流的应用_Copy文件 (1) import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  8. ZIP解压缩文件的工具类【支持多级文件夹|全】

    ZIP解压缩文件的工具类[支持多级文件夹|全] 作者:Vashon 网上有非常多的加压缩演示样例代码.可是都仅仅是支持一级文件夹的操作.假设存在多级文件夹的话就不行了. 本解压缩工具类经过多次检查及重 ...

  9. 递归找到多级文件夹中所有pdf文件的py程序

    因个人需要,写了一个可以递归找到多级文件夹中所有pdf的小程序,发布出来供有需要的人参考或使用. import os import re import shutil from os.path impo ...

随机推荐

  1. Django 创建第一个项目

    创建项目: [root@localhost ~]$ django-admin.py startproject web # web是项目名 [root@localhost ~]$ tree web/ w ...

  2. java多线程例子(生成者和消费者)

    Info.cs 商品 public class Info { boolean flag=false; private String name="张三"; private int a ...

  3. Matlab练习——多项式和一元方程求解

    1. 一元函数 f(x) = x^3 + (x - 0.98)^2 / (x + 1.25)^3 - 5 * (x + 1 / x),求f(x) = 0 的根 %在函数文件中定义函数 function ...

  4. Qt——添加动作及对话框

    1. 添加动作 教程:https://www.devbean.net/2012/08/qt-study-road-2-action/ 运行教程中的第一个程序,报错如下: 原因:没有将main.cpp改 ...

  5. thinkphp3.2 判断星期几

    后台 $w=date('w'); $week=array( "=>"星期日", "=>"星期一", "=>&qu ...

  6. 【消息队列】windows下安装RabbitMQ消息队列服务器

    RabbitMQ是什么 ? RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. 1:安装RabbitMQ需要先安装Erla ...

  7. 【读书笔记-数据挖掘概念与技术】数据仓库与联机分析处理(OLAP)

    之前看了认识数据以及数据的预处理,那么,处理之后的数据放在哪儿呢?就放在一个叫“数据仓库”的地方. 数据仓库的基本概念: 数据仓库的定义——面向主题的.集成的.时变的.非易失的 操作数据库系统VS数据 ...

  8. 【CSS系列】获取实时数据做进度

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. jquery-json 插件使用方法

    var thing = { plugin: 'jquery-json', version: 2.4 }; var encoded = $.toJSON( thing ); // '{"plu ...

  10. 国产手机插入mac os 系统中无法被识别的解决方法

    一些国产手机插入mac os 系统中无法被识别,在命令行输入 system_profiler SPUSBDataType在, 然后将魅蓝note的vendor id 添加至 ~/.android/ad ...