黑马程序员技术交流社区

标题: io题,求大神正解 [打印本页]

作者: SunCowbee    时间: 2016-9-11 00:41
标题: io题,求大神正解
1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

作者: 13411939415    时间: 2016-9-11 09:25
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);
                }
        }
}

作者: kangnam    时间: 2016-9-11 09:27
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();
        }




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