package HomeWork;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WorkTest {
	
	    public static void main(String[] args)  
	    {  
	        //在当前目录下创建一个外层目录  
	        File dir = new File("F:\\复制后的文件夹(4.20作业)");  
	        dir.mkdir();  
	   
	        //调用方法复制文件  
	        getFileList("F:\\笔记\\第1周\\2.24", "F:\\复制后的文件夹(4.20作业)");  
	    }     
	    /**
	     * 执行复制操作 
	     * @param fromFile 源目录 
	     * @param endsFile 目标目录 
	     */  
    private static void getFileList(String fromFile, String endsFile)  
    {  
        File file = null;//先创建一个文件对象(被复制对象)  
        File file1 = null; //被复制的文件 
        FileInputStream fis = null;  
        DataInputStream dis = null;  
   
        File file2 = null;  //作为复制后文件的暂时缓存
        FileOutputStream fos = null;  
        DataOutputStream dos = null;   
        try {        
            file = new File(fromFile);//创建源文件对象   
            File[] files = file.listFiles();//获得文件列表      
            for (int i = 0; i < files.length; i++){                               
	            if (files[i].isDirectory()){ //判断是否为目录   	              	               
	                File dir = new File(endsFile + "\\" + files[i].getName());  //创建目录   
	                    dir.mkdir();  //如果是目录就创建	   
	                    //递归上一级目录
	                getFileList(fromFile + "\\" + files[i].getName(),  
	                		endsFile + "\\" + files[i].getName());  
	            }  
	            else{                
	                //创建源目录下的文件对象  
	                    file1 = new File(files[i].toString());  
	                    fis = new FileInputStream(file1);  
	                    dis = new DataInputStream(fis);  
	   
	                    //创建目标目录下的文件对象  
	                file2 = new File(endsFile + "\\" + files[i].getName());  
	                fos = new FileOutputStream(file2);  
	                dos = new DataOutputStream(fos);  
	                int len = 0;  
	                while ((len = dis.read()) != -1){  
	                  
	                    //将源目录下的文件内容复制到目标目录下的文件中  
	                    dos.write(len);  
	                }  
	           System.out.println(endsFile + "\\" + files[i].getName());//把复制后的文件名及路径打印在控制台上,方便观察
	            }  
	        }  
    }  
    catch (IOException e){  
    	
    	e.printStackTrace(); 
    }finally{         
    if(fis != null){
    	try {
			fis.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
      
    if(dis != null){
    	try {
			dis.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
    }  

    }  
}