黑马程序员技术交流社区

标题: 大神帮我看一下,这个代码究竟错在哪了? [打印本页]

作者: 宋少勇    时间: 2015-12-8 23:21
标题: 大神帮我看一下,这个代码究竟错在哪了?
public static void main(String[] args) throws IOException {
                File filefor = getFile();
                File fileto = getFile();
                copy(filefor, fileto);

        }

        private static void copy(File filefor, File fileto) throws IOException {
                // 在新文件夹下创建一个文件夹,与原文件夹名相同,用于接收
                File newfile = new File(fileto, filefor.getName());
                newfile.mkdir();
                // 遍历原文件夹
                File[] files = filefor.listFiles();
                for (File file : files) {
                        // 判断是否为文件
                        if (file.isFile()) {
                                // 判断是否为 java文件
                                if (file.getName().endsWith(".java")) {
                                        // 如果是,就创建一个".txt"文件;
                                        File file2 = new File(newfile, file.getName().replace(
                                                        ".java", ".txt"));
                                        // 复制
                                        copy2(file, file2);
                                }
                               
                                        File file2 = new File(newfile, file.getName());
                                       

                                        copy2(file, file2);
                               

                        } else {
                                // 不是文件,就是文件夹,递归
                                copy(file, newfile);
                        }
                }

        }

        private static void copy2(File file, File file2)
                        throws FileNotFoundException, IOException {

                try (BufferedInputStream bis = new BufferedInputStream(
                                new FileInputStream(file));
                                BufferedOutputStream bos = new BufferedOutputStream(
                                                new FileOutputStream(file2));

                ) {

                        int len;
                        while ((len = bis.read()) != -1) {
                                bos.write(len);
                        }
                }

        }

        private static File getFile() {
                // 创建键盘录入文件夹路径,并判断是否为文件夹,
                Scanner sc = new Scanner(System.in);
                while (true) {

                        System.out.println("请输入文件夹位置:");
                        String s = sc.nextLine();
                        File file = new File(s);
                        if (!file.exists()) {
                                System.out.println("目录不存在!请重新输入");
                        } else if (file.isFile()) {
                                System.out.println("这是一个文件,请输入一个文件夹目录");
                        } else {
                                return file;
                        }

                }

        }


作者: 向上自由心    时间: 2015-12-8 23:21
public static void main(String[] args) throws IOException {
                File filefor = getFile();
                File fileto = getFile();
                copy(filefor, fileto);

        }

        private static void copy(File filefor, File fileto) throws IOException {
                // 在新文件夹下创建一个文件夹,与原文件夹名相同,用于接收
                File newfile = new File(fileto, filefor.getName());
                newfile.mkdir();
                // 遍历原文件夹
                File[] files = filefor.listFiles();
                for (File file : files) {
                        // 判断是否为文件
                        if (file.isFile()) {
                                // 判断是否为 java文件
                                if (file.getName().endsWith(".java")) {
                                        // 如果是,就创建一个".txt"文件;
                                        File file2 = new File(newfile, file.getName().replace(
                                                        ".java", ".txt"));
                                        // 复制
                                        copy2(file, file2);
                                } else {                                                      //请看这里,必须加else;否则会覆盖
                                        // 是文件但不是java文件,直接复制                  
                                        File file2 = new File(newfile, file.getName());
                                       

                                        copy2(file, file2);
                                }

                        } else {
                                // 不是文件,就是文件夹,递归
                                copy(file, newfile);
                        }
                }

        }

        private static void copy2(File file, File file2)
                        throws FileNotFoundException, IOException {

                try (BufferedInputStream bis = new BufferedInputStream(
                                new FileInputStream(file));
                                BufferedOutputStream bos = new BufferedOutputStream(
                                                new FileOutputStream(file2));

                ) {

                        int len;
                        while ((len = bis.read()) != -1) {
                                bos.write(len);
                        }
                }

        }

        private static File getFile() {
                // 创建键盘录入文件夹路径,并判断是否为文件夹,
                Scanner sc = new Scanner(System.in);
                while (true) {

                        System.out.println("请输入文件夹位置:");
                        String s = sc.nextLine();
                        File file = new File(s);
                        if (!file.exists()) {
                                System.out.println("目录不存在!请重新输入");
                        } else if (file.isFile()) {
                                System.out.println("这是一个文件,请输入一个文件夹目录");
                        } else {
                                return file;
                        }

                }

        }
作者: 向上自由心    时间: 2015-12-8 23:36
仔细看我修改后的代码,在if后加了else,否则会覆盖之前的文件,
作者: a944090777    时间: 2015-12-17 13:42
看不出来。。。。




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