java将一个目录下的所有数据复制到另一个目录下

本文实例为大家分享了java将一个目录下的所有数据复制到另一个目录下的具体代码,供大家参考,具体内容如下

/*
 将"C:\\JavaProducts\\Source"下的所有数据复制到"C:\\Target"下
*/

import java.io.*;

public class JavaCopyDemo{
 final static String SOURCESTRING = "C:\\JavaProducts\\Source";
 final static String TARGETSTRING = "C:\\Target";
 
 public static void main(String[] args){
  if(!(new File(SOURCESTRING)).exists()){
   System.out.println("源文件" + SOURCESTRING + "不存在,无法复制!");
   return;
  }else if((new File(TARGETSTRING)).exists()){
   System.out.println("目标文件" + TARGETSTRING + "已经存在,无法复制!");
   return;
  }else{
   if((new File(SOURCESTRING)).isFile()){
    copyFile(new File(SOURCESTRING),new File(TARGETSTRING));
   }else if((new File(SOURCESTRING)).isDirectory()){
    copyDirectory(SOURCESTRING,TARGETSTRING);
   }
  }
 }
 
 private static void copyFile(File sourceFile,File targetFile){
  if(!sourceFile.canRead()){
   System.out.println("源文件" + sourceFile.getAbsolutePath() + "不可读,无法复制!");
   return;
  }else{
   System.out.println("开始复制文件" + sourceFile.getAbsolutePath() + "到" + targetFile.getAbsolutePath());
   FileInputStream fis = null;
   BufferedInputStream bis = null;
   FileOutputStream fos = null;
   BufferedOutputStream bos = null;
   
   try{
    fis = new FileInputStream(sourceFile);
    bis = new BufferedInputStream(fis);
    fos = new FileOutputStream(targetFile);
    bos = new BufferedOutputStream(fos);
    int len = 0;
    while((len = bis.read()) != -1){
     bos.write(len); 
    }
    bos.flush();
    
   }catch(FileNotFoundException e){
    e.printStackTrace(); 
   }catch(IOException e){
    e.printStackTrace();
   }finally{
    try{
     if(fis != null){
      fis.close(); 
     }
     if(bis != null){
      bis.close(); 
     }
     if(fos != null){
      fos.close(); 
     }
     if(bos != null){
      bos.close(); 
     }
     System.out.println("文件" + sourceFile.getAbsolutePath() + "复制到" + targetFile.getAbsolutePath() + "完成");
    }catch(IOException e){
     e.printStackTrace();
    }
   }
  }
 }
 
 private static void copyDirectory(String sourcePathString,String targetPathString){
  if(!new File(sourcePathString).canRead()){
   System.out.println("源文件夹" + sourcePathString + "不可读,无法复制!");
   return;
  }else{
   (new File(targetPathString)).mkdirs();
   System.out.println("开始复制文件夹" + sourcePathString + "到" + targetPathString);
   File[] files = new File(sourcePathString).listFiles();
   for(int i = 0; i < files.length; i++){
    if(files[i].isFile()){
     copyFile(new File(sourcePathString + File.separator + files[i].getName()),new File(targetPathString + File.separator + files[i].getName())); 
    }else if(files[i].isDirectory()){
     copyDirectory(sourcePathString + File.separator + files[i].getName(),targetPathString + File.separator + files[i].getName());
    } 
   }
   System.out.println("复制文件夹" + sourcePathString + "到" + targetPathString + "结束");
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。