黑马程序员技术交流社区

标题: 怎样复制文件夹,再次提问 [打印本页]

作者: kingowe    时间: 2015-5-18 15:47
标题: 怎样复制文件夹,再次提问
在java中怎样把一个文件夹中的所有子文件夹和子文件复制到另一个目录呢?  是文件夹的复制,不是文件哦 , 在网上找了好多,都挺麻烦的,第二次问了,没人回答啊


作者: jiangwenjun    时间: 2015-5-18 16:58
用递归的方式
如果你一定要只复制文件夹,下面不要文件复制的方法,文件夹复制不判断就好
  1. import java.io.*;
  2. class CopyWenJianJia
  3. {
  4.         public static void main(String[] args)throws Exception
  5.         {
  6.                 //源文件夹
  7.                 String yuan = "C:\\nimeizide";
  8.                 //目的地
  9.                 String mudi = "D:\\nimeizide";
  10.                 //建立目标文件夹
  11.                 (new File(mudi)).mkdirs();
  12.                 //获取源文件夹当下的文件或目录
  13.                 File[] files = (new File(yuan)).listFiles();
  14.                 for(File file : files)
  15.                 {
  16.                         if(file.isDirectory())
  17.                         {
  18.                                 String yuanDir = yuan + "\\" + file.getName();
  19.                                 String mudiDir = mudi + "\\" + file.getName();
  20.                                 //复制目录
  21.                                 copyDir(yuanDir, mudiDir);
  22.                         }
  23.                         else
  24.                         {
  25.                                 copyFile(file, new File(mudi + "\\" + file.getName()));
  26.                         }
  27.                 }

  28.         }
  29.         //复制文件夹
  30.         public static void copyDir(String yuanDir, String mudiDir)throws Exception
  31.         {
  32.                 (new File(mudiDir)).mkdirs();
  33.                 File[] files = (new File(yuanDir)).listFiles();
  34.                 for(File file : files)
  35.                 {
  36.                         if(file.isFile())
  37.                         {
  38.                                 File yuanFile = file;//源文件
  39.                                 File mudiFile = new File(new File(mudiDir).getAbsolutePath() + "\\" + file.getName());
  40.                                 copyFile(yuanFile, mudiFile);
  41.                         }
  42.                         else
  43.                         {
  44.                                 String yuanJia = yuanDir + "\\" + file.getName();
  45.                                 String mudiJia = mudiDir + "\\" + file.getName();
  46.                                 copyDir(yuanJia, mudiJia);
  47.                         }
  48.                 }
  49.         }
  50.         //复制文件
  51.         public static void copyFile(File yuanFile, File mudiFile)throws Exception
  52.         {
  53.                 BufferedInputStream buis = new BufferedInputStream(new FileInputStream(yuanFile.getAbsoluteFile()));
  54.                 BufferedOutputStream buos = new BufferedOutputStream(new FileOutputStream(mudiFile.getAbsoluteFile()));
  55.                 byte[] buf = new byte[1024];
  56.                 int len;
  57.                 while((len = buis.read(buf)) != -1)
  58.                 {
  59.                         buos.write(buf, 0, len);
  60.                         buos.flush();
  61.                 }
  62.                 buis.close();
  63.                 buos.close();
  64.         }

  65. }
复制代码




作者: xgd6612    时间: 2015-5-18 17:02
少年 是复制文件夹啊 又不是单个文件,需要把里面的都复制了~~~~~当然不会简单了
作者: kingowe    时间: 2015-5-18 17:56
jiangwenjun 发表于 2015-5-18 16:58
用递归的方式
如果你一定要只复制文件夹,下面不要文件复制的方法,文件夹复制不判断就好

非常感谢啊!!!
作者: kingowe    时间: 2015-5-18 17:57
xgd6612 发表于 2015-5-18 17:02
少年 是复制文件夹啊 又不是单个文件,需要把里面的都复制了~~~~~当然不会简单了 ...

哈哈,多看几遍就容易了




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