黑马程序员技术交流社区

标题: 关于IO流的文件夹拷贝问题[已解决] [打印本页]

作者: 陈嘉宾    时间: 2012-6-14 17:04
标题: 关于IO流的文件夹拷贝问题[已解决]
本帖最后由 陈嘉宾 于 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;
        }
作者: 张頔    时间: 2012-6-14 17:22
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:43
本帖最后由 李海晓 于 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:44
本帖最后由 郑传庆 于 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());
                                              }
                             }




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