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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈嘉宾 中级黑马   /  2012-6-14 17:04  /  1403 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈嘉宾 于 2012-6-14 21:56 编辑

看到一段代码关于拷贝文件夹的   File[] files = originDir.listFiles();
                for (File file : files) {
                        if (file.isDirectory()) {
                                copyDir(originPath + "\\" + file.getName(), destPath + "\\"
                                                + file.getName());
                        } else {
                                copyFile(originPath + "\\" + file.getName(), destPath + "\\"
                                                + file.getName());
                        }
                }
这句话什么意思我知道前面先递归然后if后面就不懂了,高手帮忙解释,然后这个方法视频里哪里会讲到麻烦告诉我一下。。调用了上面的dir方法就能创建一个目录了吗?


        public static void main(String[] args) throws Exception {

                System.out.println("文件夹拷贝结果:"
                                + copyDir("C:\\Program Files\\Java", "E:\\java"));
        }

      public static boolean copyDir(String originPath, String destPath)
                        throws Exception {
                File originDir = new File(originPath);
                File destDir = new File(destPath);
                if (!originDir.exists()) {
                        System.out.println("源目录不存在");
                        return false;
                }
                if (!destDir.exists()) {
                        System.out.println("目标目录不存在,正在创建目标目录……");
                        destDir.mkdir();
                        System.out.println("目标目录创建成功!");
                }

                File[] files = originDir.listFiles();
                for (File file : files) {
                        if (file.isDirectory()) {
                                copyDir(originPath + "\\" + file.getName(), destPath + "\\"
                                                + file.getName());
                        } else {
                                copyFile(originPath + "\\" + file.getName(), destPath + "\\"
                                                + file.getName());
                        }
                }

                return true;
        }

3 个回复

倒序浏览
for (File file : files) {//增强for循环,将数组files里的每一个对象拿出来
                        if (file.isDirectory()) {//判断表示的文件是否是一个目录
                                copyDir(originPath + "\\" + file.getName(), destPath + "\\"//是目录的话就调用copyDir()方法将源目录(originPath)里的目录
                                                                                                                 //(file.getName())放到目的
                                                + file.getName());
                        } else {
                                copyFile(originPath + "\\" + file.getName(), destPath + "\\"//当是文件是就将文件放到目的
                                                + file.getName());
                        }
                }

回复 使用道具 举报
本帖最后由 李海晓 于 2012-6-14 17:45 编辑

if (file.isDirectory())判断file是否是一个目录,如果是则返回true,并且执行 copyDir方法,如果不是,那他就是文件,那么执行copyFile方法。
至于参数:
originPath + "\\" + file.getName(), destPath + "\\"+ file.getName());
原文件路径     \     文件名     ,目标文件路径\ 文件名
而在copyDir方法中 :
调用了上面的dir方法就能创建一个目录了吗,我不懂什么意思,创建目录是在下面copyDir方法实现的,
if (!destDir.exists()) {//判断目录存在否,如果不存在就执行下面代码
                        System.out.println("目标目录不存在,正在创建目标目录……");
                        destDir.mkdir();                                                           //这里是创建目录的
                        System.out.println("目标目录创建成功!");
                }
回复 使用道具 举报
本帖最后由 郑传庆 于 2012-6-14 17:45 编辑

  File[] files = originDir.listFiles();//z这句是声明一个File类型的数组,用来接收originDir目录下的所以文件,listFiles()表示等到当前目录下所有文件
                for (File file : files) {//这句想楼上所说,是增强for循环,用来遍历files 数组里面的所以元素(文件)
                       
                    if (file.isDirectory()) {//判断文件存在 是一个目录时,是就返回true,下面的楼上都说了
                             copyDir(originPath + "\\" + file.getName(), destPath + "\\"
                                                                               + file.getName());
                                       } else {
                                                          copyFile(originPath + "\\" + file.getName(), destPath + "\\"
                                                                         + file.getName());
                                              }
                             }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马