黑马程序员技术交流社区

标题: 分享一个面试题:拷贝指定目录下的所有文件以及目录 [打印本页]

作者: yangcy    时间: 2014-7-9 17:44
标题: 分享一个面试题:拷贝指定目录下的所有文件以及目录
分享一个面试题:拷贝指定目录下的所有文件以及目录
分析:运用递归方法将该目录下所有文件以及目录遍历出来,然后调用创建文件方法创建文件。
  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. }
复制代码

作者: zy524488    时间: 2014-7-9 21:31
这是黑马面试的面试题吗
作者: hengxing0079    时间: 2014-7-10 06:43
黑马面试题否?楼主亲身经历么?
作者: 月明星稀    时间: 2014-7-10 08:38
是黑马的吗
作者: Running    时间: 2014-7-10 08:52
最烦的就是异常处理,,面试时可不可以直接抛啊。。
作者: a191170796    时间: 2014-7-10 09:00
楼主不回复吗???
作者: 老二    时间: 2014-7-10 09:26
难道不难就是要熟练,看基础老不牢固了。
作者: 790324255a    时间: 2014-7-10 09:42
这首面试题 手写代码的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2