黑马程序员技术交流社区

标题: 求助大神,复制文件夹问题 [打印本页]

作者: zwy1174    时间: 2016-9-10 22:44
标题: 求助大神,复制文件夹问题
复制的跟原来的的源文件夹不一样
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
/*
* 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
*/
public class demo01 {
        static File file = new File(new Scanner(System.in).nextLine());
        static File file2 = new File(new Scanner(System.in).nextLine());
        public static void main(String[] args) throws Exception {
                function(file);
        }
        public static void function(File file) throws Exception{
                File newdir = new File(file2,file.getName());
                newdir.mkdirs();
                for (File f : file.listFiles()) {
                        if (f.isDirectory()) {
                                function(f);
                        }else{
                                FileInputStream fis = new FileInputStream(f);
                                FileOutputStream fos = new FileOutputStream(new File(newdir,f.getName()));
                                int len = 0;
                                byte[] by = new byte[1024];
                                while( (len = fis.read() ) != -1 ){
                                        fos.write(by,0,len);
                                }
                                fis.close();
                                //System.out.println("搞定");
                        }
                }
        }
}


作者: kangnam    时间: 2016-9-10 23:06
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();
        }
作者: 梦想的小草    时间: 2016-9-10 23:22
啥问题?




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