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

 更新时间:2020年11月30日 17:10:56   作者:wangtianze  
这篇文章主要为大家详细介绍了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 + "结束");
  }
 }
}

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

相关文章

  • Java无限级树(递归)超实用案例

    Java无限级树(递归)超实用案例

    下面小编就为大家带来一篇Java无限级树(递归)超实用案例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 详解 Java Maximum redirects (100) exceeded

    详解 Java Maximum redirects (100) exceeded

    这篇文章主要介绍了详解 Java Maximum redirects (100) exceeded的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java通过关闭Socket终止线程

    Java通过关闭Socket终止线程

    这篇文章主要为大家详细介绍了Java通过关闭Socket终止线程的相关代码
    2017-04-04
  • 浅谈将子类对象赋值给父类对象

    浅谈将子类对象赋值给父类对象

    浅谈将子类对象赋值给父类对象...
    2006-12-12
  • Java 如何将网络资源url转化为File文件

    Java 如何将网络资源url转化为File文件

    这篇文章主要介绍了Java 如何将网络资源url转化为File文件的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java中关于二叉树层序遍历深入了解

    Java中关于二叉树层序遍历深入了解

    二叉树的层序遍历是面试经常会被考察的知识点,甚至要求当场写出实现过程。层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • SpringMVC前端和后端数据交互总结

    SpringMVC前端和后端数据交互总结

    本篇文章主要介绍了SpringMVC前端和后端数据交互总结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • 一文让你搞懂如何手写一个redis分布式锁

    一文让你搞懂如何手写一个redis分布式锁

    既然要搞懂Redis分布式锁,那肯定要有一个需要它的场景。高并发售票问题就是一个经典案例。本文就来利用这个场景手写一个redis分布式锁,让你彻底搞懂它
    2022-11-11
  • 解决IDEA鼠标点击光标变大问题

    解决IDEA鼠标点击光标变大问题

    这篇文章主要介绍了解决IDEA鼠标点击光标变大问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring动态管理定时任务之ThreadPoolTaskScheduler解读

    Spring动态管理定时任务之ThreadPoolTaskScheduler解读

    这篇文章主要介绍了Spring动态管理定时任务之ThreadPoolTaskScheduler解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12

最新评论