有些时候我们要用到递归来处理一些业务,对于递归一定要有出口。

下面使用递归来实现把d盘的一个文件夹复制到c盘。

直接可用。

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

public class copyFile {
      public static void main(String[] args) {
        //复制d盘文件到C盘
        File f=new File("D:/1");
        copyMethod(f);
    }

    private static void copyMethod(File f) {
        
        if(f.isFile()){
            
         String    filePath=f.getAbsolutePath();
         String newPath="C"+filePath.substring(1);
        
         File parentFile = new File(newPath).getParentFile();
        
         if(!parentFile.exists()){
             parentFile.mkdirs();
         }
         FileInputStream  fis=null;
         FileOutputStream fos=null;
        
         try {
            fis=new FileInputStream(filePath);
            fos=new FileOutputStream(newPath);
            byte[] bytes=new byte[1024];
            int len=0;
            while((len=fis.read())!=-1){
                fos.write(bytes, 0, len);
                
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            if(fis!=null){
                try {
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(fos!=null){

    //这里的流一定要及时关闭。并且不建议将两个流的关闭放在一个try{}catch(Execption e){}中。
                try {
                    fos.close();
                } catch (IOException e) {
                   
                    e.printStackTrace();
                }
            }
        }
            return;  //最后一定要记得。
            
        }
        File[] fs=f.listFiles();//如果目录就取出list。
        
        for (File subf:fs) {
           
            copyMethod(subf);
        }
        
    }
}

posted on 2018-06-20 16:59  王衙内  阅读(177)  评论(0编辑  收藏  举报