- public static void main(String[] args) throws IOException {
- File src = getDir();
- File dest = getDir();
- //if(src.equals(dest)) { //如果源文件和目标文件一致
- //System.out.println("目标文件夹是源文件夹的子文件夹"); //提示
- //}else { //如果原文件和目标文件不一致
- copy(src,dest); //拷贝
- //}
-
- }
- private 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()) {
- File file = new File(newDir,subFile.getName()); //这里不怎么懂,请高人给读一下好吗,为什么调用subFile.getName()
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile)); //读这个文件
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); //将文件写出
- int b;
- while((b = bis.read()) != -1) {
- bos.write(b);
- }
-
- bis.close();
- bos.close();
- }else {
- copy(subFile,newDir); //还有为什么这里传的是newDir ???
- }
- }
- }
- 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;
- }
- }
- }
复制代码 |