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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SunCowbee 中级黑马   /  2016-9-11 00:41  /  402 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

3 个回复

倒序浏览
public static void copyDir(File f1,File f2) throws IOException {
        File[] arr1 = f1.listFiles();
        for (File file1 : arr1) {
                if(file1.isFile()) {
                        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file1));
                        BufferedOutputStream bos =
                                        new BufferedOutputStream(new FileOutputStream(new File(f2,file1.getName())));
                        int b;
                        while((b = bis.read()) != -1) {
                                bos.write(b);
                        }
                        bis.close();
                        bos.close();
                }else if(file1.isDirectory()) {
                        File file2 = new File(f2,file1.getName());
                        file2.mkdir();
                        copyDir(file1,file2);
                }
        }
}

点评

多谢同学发现的刷分贴,希望以后还能帮我^_^  发表于 2016-9-11 22:20
回复 使用道具 举报
public static void main(String[] args) throws IOException {
                Scanner sc =new Scanner(System.in);
                System.out.println("请输入要拷贝的文件夹路径:");
                String line1 = sc.nextLine();
                System.out.println("请输入 接受文件夹的路径:");
                String line2 = sc.nextLine();
               
                File file1 =new File(line1);
                File file2=new File(line2);
                //复制文件夹的功能
                copyFolder(file1,file2);
        }

        private static void copyFolder(File file1, File file2) throws IOException {
                //判断File1是文件夹还是文件
                if(file1.isDirectory()){
                        //是文件,先在目的地创建文件夹
                        File newFolder =new File(file2,file1.getName());
                        newFolder.mkdir();
                       
                        //获取该File对象下的所有或者文件夹File对象
                        File[] fileArray =file1.listFiles();
                        for (File file : fileArray) {
                                copyFolder(file,newFolder);
                        }
                }else{
                        //文件
                        File file3 =new File(file2,file1.getName());
                        copyFile(file1,file3);
                }
        }

        private static void copyFile(File file1, File file3) throws IOException {
                BufferedInputStream bis =new BufferedInputStream(new FileInputStream(file1));
                BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream(file3));
                byte[] a =new byte[1024];
                int b ;
                while((b=bis.read(a))!=-1){
                        bos.write(a, 0, b);
                }
                bis.close();
                bos.close();
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马