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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 marcojam 于 2015-8-9 07:37 编辑
  1. package copyrename;

  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. * 源数据:C:\\源文件
  10. * 目的地:d:\\源文件
  11. * 分析
  12. *    a:获取源文件数组对象
  13. *    b:遍历文件数组对象
  14. *    c:判断是否文件夹
  15. *                    是文件夹:
  16. *                            获取数组对象
  17. *                            遍历
  18. *                                    回到c判断
  19. *                            创建文件夹
  20. *                    不是文件夹:复制新文件
  21. *
  22. */
  23. public class CopyDemo {
  24.         public static void main(String[] args) throws IOException {
  25.                 File ifile = new File("c:\\源文件");
  26.                 File ofile = new File("d:\\");
  27.                 diguicopy(ifile, ofile);
  28.         }

  29.         // 递归法复制多层文件、文件夹
  30.         public static void diguicopy(File file, File destnation) throws IOException {
  31.                 // 在目的地创建该文件夹
  32.                 File newfolder = new File(destnation, file.getName());
  33.                 newfolder.mkdir();
  34.                 // 获取文件对象数组
  35.                 File[] files = file.listFiles();
  36.                 // 遍历该对象数组
  37.                 for (File f : files) {
  38.                         if (f.isDirectory()) {                                
  39.                                 //递归
  40.                                 diguicopy(f, newfolder);

  41.                         } else {
  42.                                 //高效字节数组缓冲流
  43.                                 BufferedInputStream bis = new BufferedInputStream(
  44.                                                 new FileInputStream(f));
  45.                                 BufferedOutputStream bos = new BufferedOutputStream(
  46.                                                 new FileOutputStream(new File(newfolder, f.getName())));
  47.                                 int b = 0;
  48.                                 byte[] by = new byte[1024];
  49.                                 while ((b = bis.read(by)) != -1) {
  50.                                         bos.write(by, 0, b);
  51.                                 }
  52.                                 bos.close();
  53.                                 bis.close();
  54.                         }
  55.                 }
  56.         }
  57. }

复制代码

4 个回复

正序浏览
cemabenteng 发表于 2015-8-14 23:56
这是你做的还是从网上找到的,基础班的视频应该不是这么讲的

这就是老师讲的啊,然后自己理解敲出来的,跟老师有点小区别,不过思路都一样
回复 使用道具 举报
风华正茂 来自手机 中级黑马 2015-8-15 18:03:58
板凳
楼主写得不错,赞一个
回复 使用道具 举报
这是你做的还是从网上找到的,基础班的视频应该不是这么讲的
回复 使用道具 举报
  1. package practice;

  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. public class Test2 {

  9.         public static void main(String[] args) throws IOException {
  10.                 File f1 = new File("F:\\111");
  11.                 File f2 = new File("E:\\111");
  12.                 if (!f2.exists()) {
  13.                         f2.mkdir();
  14.                 }
  15.                 copyfile(f1, f2);
  16.         }

  17.         private static void copyfile(File f1, File f2) throws IOException {
  18.                 File[] files = f1.listFiles();
  19.                 for (File f : files) {
  20.                         String name = f.getName();
  21.                         if (f.isDirectory()) {
  22.                                 File f3 = new File(f2 + "\\" + name);
  23.                                 f3.mkdir();
  24.                                 copyfile(f, f3);
  25.                         } else {
  26.                                 File f4 = new File(f2, name);
  27.                                 copy(f, f4);
  28.                         }
  29.                 }
  30.         }

  31.         private static void copy(File f, File f4) throws IOException {
  32.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
  33.                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f4));
  34.                 int len = 0;
  35.                 byte[] bytes = new byte[1024];
  36.                 while ((len = bis.read(bytes)) != -1) {
  37.                         bos.write(bytes, 0, len);
  38.                 }
  39.                 bos.close();
  40.                 bis.close();
  41.         }

  42. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马