键盘接收2个文件路径,将一个 拷贝到另一个中

来源:互联网 发布:深圳分数据海关 编辑:程序博客网 时间:2024/06/07 11:11
package com.heima.test;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;public class Test14 {    /**键盘接收2个文件路径,将一个 拷贝到另一个中     * @param args     * @throws IOException      */    public static void main(String[] args) throws IOException {        File src = getDir();        File dest = getDir();        if(dest.equals(src)){            System.out.println("目标文件是源文件子目录!");        }else{            copy(src,dest);        }    }    public static File getDir(){        Scanner sc = new Scanner(System.in);        System.out.println("输入文件夹路径:");        while(true){            String line = sc.nextLine();            File dir = new File(line);            if(!dir.exists()){                System.out.println("文件夹不存在!重输");            }else if(dir.isFile()){                System.out.println("不是文件夹!重输:");            }else{                return dir;            }        }    }    public static void copy(File src,File dest) throws IOException{        File newDir = new File(dest,src.getName());        newDir.mkdir();        File[] subFiles = src.listFiles();        for (File subFile : subFiles) {            if(subFile.isFile()){                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));                int len;                while((len = bis.read()) != -1){                    bos.write(len);                }                bis.close();                bos.close();            }else{                copy(subFile,newDir);            }        }    }}
0 0
原创粉丝点击