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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

宋少勇

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

20黑马币
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;
                        }

                }

        }

最佳答案

查看完整内容

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.listF ...

3 个回复

正序浏览
看不出来。。。。
回复 使用道具 举报
仔细看我修改后的代码,在if后加了else,否则会覆盖之前的文件,
回复 使用道具 举报
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;
                        }

                }

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