A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


分析:运用递归方法将该目录下所有文件以及目录遍历出来,然后调用创建文件方法创建文件。
代码如下:
  1. package com.java;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;

  7. public class CopyAllFiles {

  8.         /**
  9.          * 拷贝指定目录下的所有文件以及目录
  10.          */
  11.         public static void main(String[] args) {
  12.                 File file = new File("e:\\文件夹一");
  13.                 listAll("f:\\文件夹一\\", file);
  14.         }

  15.         private static void listAll(String destDir, File file) {
  16.                 File[] files = file.listFiles();
  17.                 for (int i = 0; i < files.length; i++) {
  18.                         if (files[i].isDirectory()) {
  19.                                 // 如果是目录,则递归向下继续寻找
  20.                                 listAll(destDir + files[i].getName() + "\\", files[i]);
  21.                         } else {
  22.                                 // 如果是文件,则开始拷贝
  23.                                 copyFile(destDir, files[i]);
  24.                         }

  25.                 }
  26.         }

  27.         private static void copyFile(String destDir, File file) {
  28.                 File fileDir = new File(destDir);
  29.                 // 创建目录
  30.                 if (!fileDir.exists()) {
  31.                         fileDir.mkdirs();
  32.                 }
  33.                 if (file == null) {
  34.                         return;
  35.                 }
  36.                 // 拷贝文件
  37.                 FileInputStream fis = null;
  38.                 FileOutputStream fos = null;
  39.                 try {
  40.                         fis = new FileInputStream(file);
  41.                         fos = new FileOutputStream(destDir + file.getName());
  42.                         int ch = -1;
  43.                         byte[] buf = new byte[1024];
  44.                         while ((ch = fis.read(buf)) != -1) {
  45.                                 fos.write(buf, 0, ch);
  46.                                 fos.flush();
  47.                         }
  48.                 } catch (FileNotFoundException e) {
  49.                         e.printStackTrace();
  50.                 } catch (IOException e) {
  51.                         e.printStackTrace();
  52.                 } finally {
  53.                         try {
  54.                                 fis.close();
  55.                                 fos.close();
  56.                         } catch (IOException e) {
  57.                                 e.printStackTrace();
  58.                         }
  59.                 }
  60.         }

  61. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马