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

作者:wangtianze 时间:2023-01-08 15:11:44 

本文实例为大家分享了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 + "结束");
 }
}
}

来源:https://www.cnblogs.com/wangtianze/p/6690652.html

标签:java,数据复制
0
投稿

猜你喜欢

  • Springboot整合Netty实现RPC服务器的示例代码

    2023-07-14 11:35:35
  • Android如何禁止向EditText控件中输入内容详解

    2021-07-29 05:01:11
  • SpringMVC Restful api接口实现的代码

    2023-11-29 12:34:27
  • java8 Stream大数据量List分批处理切割方式

    2023-02-10 22:34:36
  • 浅谈Hibernate对象状态之间的神奇转换

    2021-12-18 02:13:18
  • Android设置项目为系统APP方法

    2022-11-16 08:55:02
  • SpringBoot整合RabbitMQ实现消息确认机制

    2023-09-11 04:07:22
  • java中ThreadLocal的基本原理

    2022-03-28 01:13:44
  • Android调试出现The selected device is incompatible问题解决

    2023-08-11 12:58:34
  • java基础之String知识总结

    2022-09-24 16:25:20
  • Java中的set集合是什么意思

    2023-02-02 15:40:31
  • SpringBoot实现过滤器、拦截器与切片的实现和区别

    2023-04-28 22:51:04
  • SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增删改查分页)

    2023-09-27 01:47:32
  • selenium.chrome写扩展拦截或转发请求功能

    2022-11-29 08:29:33
  • c# rsa加密解密详解

    2023-06-11 00:54:17
  • java并发编程专题(三)----详解线程的同步

    2022-03-18 05:35:42
  • SpringBoot 3.0 新特性内置声明式HTTP客户端实例详解

    2022-11-25 13:47:20
  • Android OkHttp代理与路由的彻底理解

    2023-03-17 01:21:51
  • Android的ListView多选删除操作实现代码

    2023-06-25 22:24:38
  • 在类库或winform项目中打开另一个winform项目窗体的方法

    2023-08-14 06:47:31
  • asp之家 软件编程 m.aspxhome.com