复制文件夹

package filess;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class FileZongCopy02 {
    public static void main(String[] args) throws IOException {

        System.out.println("请输入要复制的文件夹");
        File src = selectFile();
        System.out.println("请输入复制目的文件名夹");
        File dst = selectFile();

        // 判断文件夹路径是否相同
        if (!src.equals(dst)) {
            copy(src, dst);
            System.out.println("复制完毕。");
        } else {
            System.out.println("录入的两个文件名相同,不能复制。");
        }
    }

    // 判断录入的文件夹是否存在
    private static File selectFile() {
        Scanner sc = new Scanner(System.in);
        
        while(true){
            String s = sc.nextLine();
        File name = new File(s);
        if(!name.exists()){
            System.out.println("您输入的文件夹不存在,请重新输入:");
        }else if(name.isFile()){
            System.out.println("您输入的是一个文件名,请重新输入:");
        }else{
            return name;
        }
        }

    }

    // 复制文件夹
    private static void copy(File src, File dst) throws IOException {
        File[] files = src.listFiles();
        for (File subFile : files) {
            // 判断子目录是否为文件
            if (subFile.isFile()) {
                // 指定路径
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(dst, subFile.getName())));
                // 开始读写
                int len;
                byte[] b = new byte[1024];
                while ((len = bis.read(b)) != -1) {
                    bos.write(b, 0, len);
                }
                // 如果子目录仍是文件夹则创建该文件夹
            } else if (subFile.isDirectory()) {
                File newFile = new File(dst, subFile.getName());
                newFile.mkdirs();
                // 继续调用文件夹复制方法
                copy(subFile, newFile);
            }
        }
    }
}

 

posted @ 2017-11-15 22:41  球球啦啦啦  阅读(268)  评论(0编辑  收藏  举报