黑马程序员技术交流社区

标题: 复制一个文件夹中的全部内容 [打印本页]

作者: ShadowDancer    时间: 2015-3-3 15:00
标题: 复制一个文件夹中的全部内容
琢磨一上午,越琢磨越乱!!!
在这里求指教了
文件夹中包括图片,文档,音乐及多个子文件夹,每个子文件夹下又包括一些文件
复制全部内容至另一路径
还请各位大神不要曲解题意,谢谢


作者: 万合天宜    时间: 2015-3-3 15:07
  1. package com.itheima;

  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;

  8. /*
  9. * 需求:复制多极文件夹
  10. *
  11. * 数据源:E:\JavaSE\day21\code\demos
  12. * 目的地:E:\\
  13. *
  14. * 分析:
  15. *                 A:封装数据源File
  16. *                 B:封装目的地File
  17. *                 C:判断该File是文件夹还是文件
  18. *                         a:是文件夹
  19. *                                 就在目的地目录下创建该文件夹
  20. *                                 获取该File对象下的所有文件或者文件夹File对象
  21. *                                 遍历得到每一个File对象
  22. *                                 回到C
  23. *                         b:是文件
  24. *                                 就复制(字节流)
  25. */
  26. public class CopyFoldersDemo {
  27.         public static void main(String[] args) throws IOException {
  28.                 // 封装数据源File
  29.                 File srcFile = new File("E:\\JavaSE\\day21\\code\\demos");
  30.                 // 封装目的地File
  31.                 File destFile = new File("E:\\");

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

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

  42.                         // 获取该File对象下的所有文件或者文件夹File对象
  43.                         File[] fileArray = srcFile.listFiles();
  44.                         for (File file : fileArray) {
  45.                                 copyFolder(file, newFolder);
  46.                         }
  47.                 } else {
  48.                         // 文件
  49.                         File newFile = new File(destFile, srcFile.getName());
  50.                         copyFile(srcFile, newFile);
  51.                 }
  52.         }

  53.         private static void copyFile(File srcFile, File newFile) throws IOException {
  54.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
  55.                                 srcFile));
  56.                 BufferedOutputStream bos = new BufferedOutputStream(
  57.                                 new FileOutputStream(newFile));

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

  63.                 bos.close();
  64.                 bis.close();
  65.         }
  66. }
复制代码

作者: ShadowDancer    时间: 2015-3-3 15:11
万合天宜 发表于 2015-3-3 15:07

哥  你告诉我  毕老师基础视频  刚看完  给这么道题  能不能敲出来!!!
作者: 万合天宜    时间: 2015-3-3 15:12
能,这是最简单最基本的面试题~
作者: ShadowDancer    时间: 2015-3-3 15:14
万合天宜 发表于 2015-3-3 15:07

思路清晰,但是写不出代码是经验的原因吗???

作者: kobe24    时间: 2015-3-3 15:15
ShadowDancer 发表于 2015-3-3 15:11
哥  你告诉我  毕老师基础视频  刚看完  给这么道题  能不能敲出来!!!

如果是看完没实际敲代码,我估计你什么都不会,如果你当时看懂了,而且自己也能写代码,那么写这个应该不成问题。
作者: ShadowDancer    时间: 2015-3-3 15:27
kobe24 发表于 2015-3-3 15:15
如果是看完没实际敲代码,我估计你什么都不会,如果你当时看懂了,而且自己也能写代码,那么写这个应该不 ...

我们16期见哈!!!
作者: ShadowDancer    时间: 2015-3-3 15:37
万合天宜 发表于 2015-3-3 15:12
能,这是最简单最基本的面试题~

就因为这是面试题我才问呢!!!我正准备申请面试呢,io包中还有其他面试题能来几道吗  方便我着重复习一下!!!





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