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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1.         public static void main(String[] args) throws IOException {
  2.                 File src = getDir();
  3.                 File dest = getDir();
  4.                 //if(src.equals(dest)) {                                                                                //如果源文件和目标文件一致
  5.                         //System.out.println("目标文件夹是源文件夹的子文件夹");                                //提示
  6.                 //}else {                                                                                                                //如果原文件和目标文件不一致
  7.                         copy(src,dest);                                                                                        //拷贝
  8.                 //}
  9.                
  10.         }


  11.         private static void copy(File src, File dest) throws IOException {
  12.                 File newDir = new File(dest,src.getName());                                        //创建文件拷贝后的目录,目的文件夹为父目录,被拷贝的文件名字作为子目录
  13.                 newDir.mkdir();                                                                                                //创建这个目录
  14.                
  15.                 File[] subFiles = src.listFiles();                                                        //获取当前文件夹下的所有的字母录
  16.                 for (File subFile : subFiles) {                                                                //遍历这个数组
  17.                         if(subFile.isFile()) {
  18.                                 File file = new File(newDir,subFile.getName());                //这里不怎么懂,请高人给读一下好吗,为什么调用subFile.getName()
  19.                                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));        //读这个文件
  20.                                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));        //将文件写出
  21.                                 int b;
  22.                                 while((b = bis.read()) != -1) {
  23.                                         bos.write(b);
  24.                                 }
  25.                                
  26.                                 bis.close();
  27.                                 bos.close();
  28.                         }else {
  29.                                 copy(subFile,newDir);   //还有为什么这里传的是newDir ???
  30.                         }
  31.                 }
  32.         }


  33.         public static File getDir() {
  34.                 Scanner sc = new Scanner(System.in);
  35.                 System.out.println("请输入一个文件夹路径:");
  36.                 while (true) {
  37.                         String line = sc.nextLine();
  38.                         File dir = new File(line);

  39.                         if (!dir.exists()) {
  40.                                 System.out.println("您输入的文件夹路径不存在,请重新输入:");
  41.                         } else if (dir.isFile()) {
  42.                                 System.out.println("您输入的是文件路径,请输入一个文件夹路径");
  43.                         } else {
  44.                                 return dir;
  45.                         }
  46.                 }

  47.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

1 个回复

倒序浏览
subFiles 是数组(也可以看作文件夹),你自己也注释了,遍历subFiles数组(文件夹里面有很多子文件夹),获取数组每一个子文件,创建一个file对象封装子文件,获取子文件夹名称subFile.getName作为新的目录名称!

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马