之前已经完成了单个文件夹的拷贝功能,在此基础上很容易实现多个文件夹的合并了,套一个for循环就可以啦!

package com.xx.test.copy;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class TestCombineDirectory {/*** @param args*/public static void main(String[] args) {String[] sourceDirNames = {"D:/LuceneEx","D:/LuceneEx2"};String targetDirName = "D:/LuceneEx_backup";combineDirectory(sourceDirNames,targetDirName);}/*** 合并多个文件夹到一个文件夹中* @param sourceDirNames* @param targetDirName*/private static void combineDirectory(String[] sourceDirNames,String targetDirName) {if(sourceDirNames==null || sourceDirNames.length==0){throw new RuntimeException("待合并的文件夹不存在...");}for(int i=0;i<sourceDirNames.length;i++){copyDir(sourceDirNames[i], targetDirName);}System.out.println("合并所有的文件夹完成...");}/*** 拷贝目录,递归的方法* @param sourceDirName* @param targetDirName*/public static void copyDir(String sourceDirName, String targetDirName) {File sourceDir = new File(sourceDirName);File targetDir = new File(targetDirName);if(sourceDir==null || !sourceDir.exists()){throw new RuntimeException("待拷贝的文件夹不存在..."+sourceDir.getAbsolutePath());}if(!sourceDir.isDirectory()){throw new RuntimeException("待拷贝的文件不是目录..."+sourceDir.getAbsolutePath());}if(!targetDir.exists()){targetDir.mkdirs();}File[] files = sourceDir.listFiles();for(int i=0;files!=null && i<files.length;i++){if(files[i].isFile()){  //复制文件copyFile(files[i],new File(targetDirName+File.separator+files[i].getName()));}else if(files[i].isDirectory()){  //复制目录,递归的方法// 复制目录   String dir1 = sourceDirName+File.separator+files[i].getName();  String dir2 = targetDirName+File.separator+files[i].getName();  copyDir(dir1, dir2);  }}System.out.println("拷贝文件夹成功..."+sourceDir.getAbsolutePath());}/*** 拷贝单个的文件* @param sourceFile   源文件* @param targetFile 目标文件*/private static void copyFile(File sourceFile, File targetFile) {FileInputStream in = null;BufferedInputStream bis = null;FileOutputStream out = null;BufferedOutputStream bos = null;try {// 新建文件输入流并对它进行缓冲   in = new FileInputStream(sourceFile);  bis = new BufferedInputStream(in);  // 新建文件输出流并对它进行缓冲   out = new FileOutputStream(targetFile);  bos = new BufferedOutputStream(out);  // 缓冲数组   byte[] b = new byte[1024 * 5];  int len;  while ((len =bis.read(b)) != -1) {  bos.write(b, 0, len);  }  // 刷新此缓冲的输出流   bos.flush();  } catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {if(bos!=null)bos.close();} catch (IOException e) {e.printStackTrace();}try {if(bis!=null)bis.close();} catch (IOException e) {e.printStackTrace();}}}
}

有写的不对的地方或者考虑不完全的情况,还请大家多多指教。另外,如果想效率更高一点,可以考虑使用NIO来完成 单个文件的拷贝。

Java 多文件夹合并相关推荐

  1. 一个java删除文件夹的小方法

    java删除文件夹都是从里向外删除,使用递归的方法. public class IO_FILEdemo09 {public static void main(String[] args) {// TO ...

  2. java 创建文件夹的方法_Java创建文件夹的方法

    Java创建文件夹的方法 /** * 用于创建文件夹的方法 * @param mkdirName */ public void mkdir(String mkdirName) { try { File ...

  3. java 创建文件夹的方法_java中创建文件夹的方法

    java中创建文件夹的方法 发布时间:2020-06-10 11:46:49 来源:亿速云 阅读:461 作者:Leah 这篇文章给大家分享的是java中创建文件夹的方法.小编觉得挺实用的,因此分享给 ...

  4. 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法

    2019独角兽企业重金招聘Python工程师标准>>> 建立好一个Maven项目后,如果Java Resources资源文件下没有src/main/java文件夹,并且在手动创建这个 ...

  5. Java判断文件夹是否存在,不存在则新建

    1.Java判断是否存在文件夹,不存在则新建 File file = new File("D:/test/filetest/test.txt"); if (!file.getPar ...

  6. java zip 文件夹_Java Zip文件文件夹示例

    java zip 文件夹 Today we will look into java zip file example. We will also compress a folder and creat ...

  7. eclipse 的Java Resource文件夹显示有错,可是文件夹下面的文件没有提示错误,这是怎么回事?怎么解决?

    eclipse 的Java Resource文件夹显示有错,可是文件夹下面的文件没有提示错误,这是怎么回事?怎么解决? 1.maven更新一下 2.或者把这个工程给删除了在创建一遍看看还有没有出 3. ...

  8. java创建文件夹(Java创建文件夹失败重新创建)

    java创建目录或文件夹的方法? 1.File类的createNewFile根据抽象路径创建一个新的空文件,当抽象路径制定的文件存在时,创建失败 2.File类的mkdir方法根据抽象路径创建目录32 ...

  9. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    java读取文件夹下所有文件并替换文件每一行中指定的字符串 该文章为转载文章,请尊重原文作者的劳动成果,好的文章应该被展示 原文传送门 多说两句,关键时候救人性命的人,可以称之为大人,随时做好利见大人 ...

最新文章

  1. hp服务器硬件安装,HP Gen8 服务器安装2008 R2 帮助手册
  2. HashMap类Compute方法详解及样例
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset操作
  4. 有道智能学习灯 初体验
  5. Kali Linux 下渗透测试 | 3389 批量爆破神器 | hydra | 内网渗透测试
  6. Loadruner压数据库oracle,LoadRunner连接Oracle数据库(转)
  7. Android 自定义阴影,自定义颜色样式
  8. python软件是什么原因引起的_Python对程序员重要的原因在哪里?
  9. thinkphp手机版小说网站源码
  10. vue form validate 多个input_Vue表单校验插件Vuerify使用详细教程及示例
  11. PAT_1038_统计相同成绩的学生(20)
  12. 中缀表达式 转 前缀表达式
  13. 桌面时间的最佳管理者-软媒时间_我是亲民_新浪博客
  14. linux桌面图标大小,ubuntu17.10修改桌面图标大小的方法
  15. 解构语音交互产品--人工智能AI技术
  16. FMCW雷达测速和测距原理介绍
  17. 【英语阅读】纽约时报 | 护目镜、口罩、雨衣:大流行时代的空中旅行
  18. Java学习——Day13:IO流
  19. hdu1425 sort
  20. B. TMT Document—— Codeforces Round #715 (Div. 2)

热门文章

  1. Thymeleaf实现页面静态化
  2. 要闻君说:又一家云服务关停,原来是网易;MongoDB又爆泄露大新闻;Google 的中国版搜索引擎项目其实仍在继续...
  3. 2021支付宝五福活动 扫码必得沾福气卡 还可获得随机福卡 集五福攻略大全
  4. Java基础【之】循环、流程控制 (if else、whitch case、while、do while、for...i、foreach、多层循环与退出)
  5. Openzeppelin库 09.Crowdsale
  6. 【DNS】Windows查看和清理DNS缓存
  7. 游戏金币数据库:QPTreasureDB
  8. jQuery实现轮播(jQuery究竟有多好用)
  9. 百度网盘 http://pandownload.com/index.html
  10. U盘安装原版XP系统全攻略