黑马程序员技术交流社区

标题: 想写个复制文件夹的程序,写了半天还是有错误,有时间再改吧。 [打印本页]

作者: noiary    时间: 2014-11-5 23:53
标题: 想写个复制文件夹的程序,写了半天还是有错误,有时间再改吧。
运行起来就说找不到指定路径,

复制文件路径的确有些混乱,

有时间再慢慢研究!


  1. /**
  2. *
  3. */

  4. import java.io.BufferedInputStream;
  5. import java.io.BufferedOutputStream;
  6. import java.io.File;
  7. import java.io.FileInputStream;
  8. import java.io.FileNotFoundException;
  9. import java.io.FileOutputStream;
  10. import java.io.IOException;

  11. /**
  12. * @author always
  13. * @题目:复制一个文件夹,包括里面逐级目录中的内容。
  14. */
  15. public class DirectoryCopy {

  16.         /**
  17.          * @param args
  18.          * @throws FileNotFoundException
  19.          */
  20.         public static void main(String[] args) {
  21.                 // TODO Auto-generated method stub

  22.                 // 关联待复制文件夹
  23.                 File baseDir = new File("D:\\Java\\java027\\day07");

  24.                 // 指定拷贝文件夹的父目录
  25.                 File parent = new File("D:\\Java");

  26.                 dirCopy(baseDir, parent);
  27.         }

  28.         public static void dirCopy(File baseDir, File parent) {
  29.                 String dirName = baseDir.getName();

  30.                 /* 如果两个文件夹在同一目录下,复制后的文件夹名字尾部+“ 复件” */
  31.                 if (parent.getName().equals(baseDir.getParent()))
  32.                         dirName = baseDir.getName() + " 复件";

  33.                 File newDir = new File(parent, dirName);
  34.                 String newDirs = newDir.getAbsolutePath();
  35.                 dirRecursion(baseDir, newDirs);
  36.         }

  37.         /* 文件夹递归 */
  38.         public static void dirRecursion(File baseDir, String newDir) {
  39.                 File[] files = baseDir.listFiles();
  40.                 for (File f : files) {
  41.                         if (!f.isHidden()) {
  42.                                 if (f.isDirectory()) {
  43.                                         newDir = newDir + "\\" + f.getName();
  44.                                         dirRecursion(f, newDir);
  45.                                 } else {
  46.                                                 newDir = newDir + "\\" + f.getName();
  47.                                                 fileWrite(f, newDir);// 如果不是文件夹,调用文件写入函数
  48.                                 }
  49.                         }
  50.                 }
  51.         }

  52.         /* 把文件写入到硬盘 */
  53.         public static void fileWrite(File file, String newDir) {

  54.                 BufferedInputStream bufis = null;

  55.                 BufferedOutputStream bufos = null;

  56.                 try {
  57.                         bufis = new BufferedInputStream(new FileInputStream(file));
  58.                 } catch(IOException e) {
  59.                         throw new RuntimeException("文件读取失败" + e);
  60.                 }
  61.                
  62.                 try {
  63.                         bufos = new BufferedOutputStream(new FileOutputStream(newDir));
  64.                 } catch (IOException e) {
  65.                         throw new RuntimeException("文件写入失败" + e);
  66.                 }

  67.                 try {
  68.                         int by = 0;
  69.                         while ((by = bufis.read()) != -1) {
  70.                                 bufos.write(by);
  71.                         }
  72.                 } catch (IOException e) {
  73.                         throw new RuntimeException("文件读写失败" + e);
  74.                 }



  75.                 finally {
  76.                         try {
  77.                                 if (bufis != null)
  78.                                         bufis.close();
  79.                         } catch (IOException e) {
  80.                                 System.out.println(e);
  81.                         }

  82.                         try {
  83.                                 if (bufos != null)
  84.                                         bufos.close();
  85.                         } catch (IOException e) {
  86.                                 System.out.println("关闭bufos失败");
  87.                         }
  88.                 }

  89.         }
  90. }
复制代码





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