JAVA递归调用 复制文件夹及子文件夹及文件夹下的文件

import java.io.*;
  import java.util.*;
  /**
  *复制文件
  *by lecky.lee
  *2006-06-08
  */
  
  public class CopyFile
  {
   String intiPathOut;
   //初始输出路径
   int cnt=0;
   //计数器,用于判定是否首次调用copyFiles方法
   public void copyFiles(String pathIn,String pathOut) throws IOException
   {
   File f= new File(pathIn);
   if(!f.exists()){
   System.out.println ("源文件路径不存在");
   System.exit(5);
   }
   if(cnt==0){
   File out = new File(this.intiPathOut);
   out.mkdir();
   //首次调用执行,创建初始输出目录
   }
   if(f.isFile()){
   this.copyFile(f,pathOut);
   }
   else{
   this.copyDir(f,pathOut);
   } 
   
   cnt++;
   
   }
   
   public void copyDir(File f,String pathOut) throws IOException{
   System.out.println(f.getPath());
   
   
   pathOut=this.intiPathOut+f.getPath().substring(2);
   //修改输出路径字符串,将子文件夹相对路径追加至初始输出路径
   //substring用于去掉路径中的驱动器盘符
   File dir = new File(pathOut);
   dir.mkdir(); 
  
   
   File temp[]=f.listFiles();
   for(int i=0;i   this.copyFiles(temp[i].toString(),pathOut);
   //递归调用此方法
   }
   
   }
   
   public void copyFile(File f,String pathOut) throws IOException{
   System.out.println(f.getPath());
   
   DataInputStream in = new DataInputStream(
   new BufferedInputStream(
   new FileInputStream(f.getPath())));
   
   
   byte[] date = new byte[in.available()];
   
   in.read(date);
   
   DataOutputStream out = new DataOutputStream(
   new BufferedOutputStream(
   new FileOutputStream(pathOut+"/"+f.getName())));
   
   
   out.write(date);
   
   in.close();
   out.close(); 
   
   }
   public static void main(String[] args) throws IOException
   {
   CopyFile cp = new CopyFile();
   cp.intiPathOut="D:/11111111";
   cp.copyFiles("D:/lecky","D:/11111111");
   System.out.println ("复制完毕"); 
   }
   
  } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值