Java 多文件夹合并
来源:互联网 发布:js数组指定下标截取 编辑:程序博客网 时间:2024/06/05 00:45
之前已经完成了单个文件夹的拷贝功能,在此基础上很容易实现多个文件夹的合并了,套一个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 多文件夹合并
- Java 多文件夹合并
- java 文件夹合并
- java 合并文件夹下多个文件
- linux下合并文件夹
- 合并文件夹下文本
- 【.NET】合并文件夹
- 合并文件夹一
- 合并文件夹二
- java 合并多个文件
- windows下文件夹合并分割
- Linux下合并覆盖文件夹
- Java中SequenceInputStream合并流实现多个文件合并
- java文件夹
- dos命令—将多个文件夹下的多个txt文件合并成为一个txt文件
- 将一个文件夹下的多个文件合并到一个文件中
- 将文件夹下的多个文件的内容合并到一个文件中
- 如何使用java合并多个文件
- SQLite学习笔记
- Lucene教程详解
- 图像处理常用边缘检测算子总结
- java基础入门之四(数组+排序)
- Tab应用之情景模式
- Java 多文件夹合并
- 目标板挂载NFS时 需要nolock参数
- 高效程序员的7个共同特征
- 以后写函数要考虑多一些
- lua 脚本 string.find 查找关于 ( ) 的问题
- java基础入门之五(面向对象+this)
- c primer plus 读书笔记1
- STM8S和STM32的IWDG(Independent watchdog)设置
- C++基于ATL工程编写ActiveX控件步骤