- 浏览: 7341708 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在项目中在一个文件目录中存放多个临时文件合并文件功能的,提供代码以供交流,如有不同意见一起商议,希望各位大牛提出更好的意见和建议.再次表示感谢.
package easyway.tbs.file.transport.core.combine; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 文件合并器 * 1.首先将根据消息中线程数,过滤目录文件数目等于线程数表示文件下载完毕。 * 2.开始合并临时文件为一个文件。 * * @author longgangbai * */ public class FileCombineFetch extends Thread { private static final transient Logger LOG = LoggerFactory.getLogger(FileCombineFetch.class); /** * 目标文件的名称 */ private File targetFile; /** * 临时文件的目录 */ private Collection<File> tmpFiles; /** * 将需要合并的文件合并为一个文件 * * @param targetFile * 需要生成的目标文件 * @param tmpFiles * 临时文件的集合 */ public FileCombineFetch(String targetFile,Collection<File> tmpFiles){ this.targetFile=new File(targetFile); this.tmpFiles=tmpFiles; } /** * 执行合并文件的线程方法 * */ public void run(){ BufferedOutputStream outputStream=null; try { //创建读取文件流的目录 outputStream = new BufferedOutputStream(new FileOutputStream(targetFile)); List<File> fileList=new ArrayList<File>(); fileList.addAll(fileList); // Collections.sort(fileList,new Comparator<File>(){ // public int compare(File file0, File file1) { // // String fileIndex0=FilenameUtils.getBaseName(file0.getName()).split("_")[2]; // String fileIndex1=FilenameUtils.getBaseName(file1.getName()).split("_")[2]; // return Integer.valueOf(fileIndex0).compareTo(Integer.valueOf(fileIndex1)); // } // }); for(int i=1;i<=tmpFiles.size();i++){ String tempFileName=targetFile.getParent()+File.separator+FilenameUtils.getBaseName(targetFile.getName())+"_"+tmpFiles.size()+"_"+i+".tmp"; File tempFile=new File(tempFileName); System.out.println("tempFile="+tempFile.getAbsolutePath()); //读取文件的中信息 byte[] bytes=FileUtils.readFileToByteArray(tempFile); //向目标文件中写入数据 outputStream.write(bytes); //刷新缓冲区 outputStream.flush(); } /* for (File tempFile : tmpFiles) { System.out.println("tempFile"+tempFile.getName()); //读取文件的中信息 byte[] bytes=FileUtils.readFileToByteArray(tempFile); //向目标文件中写入数据 outputStream.write(bytes); //刷新缓冲区 outputStream.flush(); }*/ //刷新缓冲区 outputStream.flush(); //临时文件写完毕之后,删除临时文件 for (File tempFile : tmpFiles) { FileUtils.forceDelete(tempFile); } //向数据写日志 //介绍文件成功 } catch (Exception e) { e.printStackTrace(); }finally{ try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } public File getTargetFile() { return targetFile; } public void setTargetFile(File targetFile) { this.targetFile = targetFile; } public Collection<File> getTmpFiles() { return tmpFiles; } public void setTmpFiles(Collection<File> tmpFiles) { this.tmpFiles = tmpFiles; } }
package easyway.tbs.file.transport.core.combine; import static easyway.tbs.file.transport.commons.Constants.FILE_SEPARATOR_CHAR; import java.io.File; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.Predicate; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import easyway.tbs.commons.FileOperateUtils; /** * 文件合并线程 * * @author longgangbai * */ @SuppressWarnings("unchecked") public class FileCombineManager { private static final transient Logger LOG = LoggerFactory.getLogger(FileCombineManager.class); /** * 临时文件目录 */ private String tmpdir; /** * 文件扩展后缀 */ private String[] extensions; public FileCombineManager(String tmpdir,String[] extensions){ this.tmpdir=tmpdir; this.extensions=extensions; } /** *合并文件的信息 */ public void combineFiles(){ //创建临时目录的文件系统 File directory=new File(tmpdir); if(directory.exists()){ //获取所有的临时文件 Collection<File> tmpFileColl=FileOperateUtils.searchExtensionFile(directory, extensions, false); //存储文件名称的字符串集合 Map<String,Integer> fileNameMap=new HashMap<String,Integer>(); //遍历获取相关的临时文件信息 for (File file : tmpFileColl) { String fileName=file.getName(); //临时文件命名格式:目标文件名称+“_”+线程数+"_"+"当前下载的线程号" String prefix=fileName.split(FILE_SEPARATOR_CHAR)[0]; Integer threadNum=Integer.valueOf(fileName.split(FILE_SEPARATOR_CHAR)[1]); if(!fileNameMap.containsKey(prefix)){ fileNameMap.put(prefix, threadNum); } } //获取所有的临时文件名称 Set<Entry<String,Integer>> fileNameEntryMap=fileNameMap.entrySet(); for (Entry<String, Integer> entry : fileNameEntryMap) { //文件的名称 final String fileName=entry.getKey(); //获取同一个文件的所有的临时文件 Collection<File> oneFileTmpColl=CollectionUtils.predicatedCollection(tmpFileColl, new Predicate(){ public boolean evaluate(Object object) { File file=(File)object; StringUtils.contains(file.getName(), fileName); return true; } }); System.out.println("Coll ="+oneFileTmpColl); //临时文件的总的数量 int totalTmpFile=oneFileTmpColl.size(); //检查临时文件是否现在完毕 if(totalTmpFile==entry.getValue()){ //开始执行合并工作 String targetFileName=tmpdir+File.separator+fileName+".txt"; new FileCombineFetch(targetFileName,oneFileTmpColl).start(); } } }; } public String[] getExtensions() { return extensions; } public void setExtensions(String[] extensions) { this.extensions = extensions; } public String getTmpdir() { return tmpdir; } public void setTmpdir(String tmpdir) { this.tmpdir = tmpdir; } }
package easyway.tbs.file.transport.core.combine; /** * 测试代码 * @author Owner * */ public class FileCombineManagerMain { public static void main(String[] args) { FileCombineManager fileCombine=new FileCombineManager("E:/TestJoltProxy",new String[]{"tmp"}); fileCombine.combineFiles(); } }
发表评论
-
【转】Django resources
2014-01-23 14:35 10829Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197848pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 257561> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9222在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2840安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3651在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1675在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2242在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1606在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1749在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1103http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3357TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51595文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14205最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8697TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2717TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2815TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2458TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2789TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2705TestNG官方网站: http://testng.or ...
相关推荐
文件分割和文件合并功能,java语言开发
在这个实验中,学生将学习如何使用JAVA API有效地处理文件,实现文件的分割和合并功能。 文件切割是指将一个较大的文件分成若干个较小的部分,通常是为了便于传输、存储或者分块处理。在JAVA中,我们可以使用`java....
在Java编程语言中,将多个小文件合并成一个文件是一个常见的需求,特别是在处理大量数据或者进行文件归档时。这个过程通常称为文件拼接或文件合并。以下将详细讲解如何使用Java来实现这一功能。 首先,我们需要理解...
在这个场景下,Java的IO(Input/Output)库提供了丰富的功能来实现文件的读取、写入和流控制,从而实现文件的分割与合并。本文将详细介绍如何使用Java IO来完成这两个任务。 首先,我们来看一下文件分割的过程。...
在Java编程语言中,文件合并与分割是常见的文件操作任务,尤其在大数据处理、日志分析和文件管理等场景中尤为关键。本程序提供了一个基础的实现,旨在帮助初学者理解这一过程,并通过MD5校验确保文件的完整性和未被...
本文将详细介绍两种不同的方法来实现这一功能,结合给定的资源"java多个word文件合并.zip",我们将探讨如何使用JACOB库和Apache POI库来完成这个任务。 1. **JACOB库**: JACOB(Java COM Bridge)是一个开源的...
通过以上步骤,你可以使用Java和Apache PDFBox成功地将多个Base64编码的PDF文件合并为一个PDF文件。这种方法在处理大量PDF文件时非常有效,且代码简洁易于维护。同时,Apache PDFBox库还提供了许多其他功能,如PDF元...
在Java开发中,PDF文档处理是一项常见的任务,特别是在企业级应用中,可能需要将多个PDF文件合并成一个,便于管理和阅读。本实例将探讨如何使用Java进行PDF合并,特别是通过iText库实现这一功能。 iText是一个开源...
在Java编程环境中,合并多个PDF...通过上述代码,你可以在Java项目中实现将PDF文件夹中的多个PDF文件合并为一个PDF文件。请确保在运行代码之前,已经正确配置了PDFBox库,并且提供的文件夹路径包含了要合并的PDF文件。
在Java开发中,Minio提供了丰富的API,使得开发者能够方便地进行文件的上传、下载、合并和删除等操作。本示例Demo将详细介绍如何在Java环境中利用Minio框架进行这些操作,并且这个示例是完整的,可以直接应用于生产...
下面我们将深入探讨关于多文件夹/文件合并的知识点,以及如何使用Java实现这一功能。 **1. 文件与文件夹合并的概念** 文件合并通常涉及到将两个或多个文件内容拼接在一起,形成一个新的单一文件。而文件夹合并则...
在Java编程语言中,文件合并是一项常见的操作,特别是在处理大量数据或者日志文件时。本文将深入探讨如何使用`BufferedReader`和`FileReader`来实现这个功能。这两个类是Java标准库中的IO流类,它们能够高效地读取和...
这里我们将详细讨论如何通过Java程序实现Hive内部表的小文件合并。 首先,理解Hive内部表和外部表的区别是关键。内部表的数据由Hive完全管理,删除内部表会同时删除其对应的数据。而外部表仅仅是一个指向实际数据的...
### Java实现文件拆分合并 #### 一、背景与需求分析 在大数据处理场景中,经常需要对大型文件进行拆分或合并操作。...通过以上步骤,我们可以高效地使用Java实现文件的拆分功能,为后续的数据处理提供便利。
首先,我们来看一下`SplitImageUtil.java`这个文件,它是实现文件分割和合并功能的主要代码。在Java中,我们可以使用`java.io`包中的`File`类、`BufferedInputStream`和`BufferedOutputStream`进行文件操作。`...
【JAVA文件分割合并器】是一种基于Java编程语言开发的实用工具,主要功能是对大文件进行高效地分割和合并。在日常工作中,我们可能遇到需要处理大量数据或传输超大文件的情况,这时文件分割和合并的功能就显得尤为...
文件合并是将多个小文件合并回一个大文件的过程。这通常涉及读取每个子文件并将其内容追加到目标文件中。以下是一个简单的文件合并示例: ```java import java.io.*; public class FileMerger { public static ...
在Java开发中,有时我们需要处理多个PDF文档,例如将它们合并成一个文件或者为合并后的文件生成目录和页码。这个任务通常出现在报告生成、文档整合等场景中。本项目提供了一个纯Java实现的解决方案,它能有效地完成...
本文将详细介绍如何使用Java语言实现文件的分割与合并功能。此技术对于数据传输、备份或处理大量数据时非常有用。通过分割大文件为较小的部分,可以有效地减少单个文件的大小,从而更容易进行传输或存储。此外,文件...
总结,Java通过Apache POI库可以方便地处理Excel文件,包括合并单元格。这个过程涉及到创建工作簿和工作表,定义合并范围,写入数据并保存文件。在开发过程中,灵活运用这些方法可以满足各种复杂的Excel操作需求。