鍵盤錄入兩個文件路徑,將其中一個文件夾中的所有的文件複製到另一個文件中

package com.cast;
/*
 * 鍵盤錄入兩個文件路徑,將其中一個文件夾中的所有的文件複製到另一個文件中
 * 
 */
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 CopyFilestoOthers {
    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);
        }
        //搞定
        System.out.println("文件夾已經複製完成.");
    }
    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());
        if (!newDir.exists()) {     //如果文件夾不存在
            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);
            }
        }
    }
}
發佈了39 篇原創文章 · 獲贊 42 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章