java合并多个文件的两种方法

这篇文章主要为大家详细介绍了java合并多个文件的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在java多个线程下载文件或处理较大文件是可能会切分成多个文件,处理完成后需要合并成一个文件。

Java中合并子文件最容易想到的就是利用BufferedStream进行读写。

利用BufferedStream合并多个文件

 public static boolean mergeFiles(String[] fpaths, String resultPath) { if (fpaths == null || fpaths.length <1 || textutils.isempty(resultpath)) { return false; } if (fpaths.length== 1) new file(fpaths[0]).renameto(new file(resultpath)); file[] files=new file[fpaths.length]; for (int i < fpaths.length; ++) files[i]=new file(fpaths[i]); (textutils.isempty(fpaths[i]) !files[i].exists() !files[i].isfile()) file resultfile=new file(resultpath); try int bufsize=1024; bufferedoutputstream outputstream=new bufferedoutputstream(new fileoutputstream(resultfile)); byte[] buffer=new byte[bufsize]; 0; bufferedinputstream inputstream=new bufferedinputstream(new fileinputstream(files[i])); readcount; while ((readcount=inputStream.read(buffer))> 0) { outputStream.write(buffer, 0, readcount); } inputStream.close(); } outputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } for (int i = 0; i 

利用nio FileChannel合并多个文件

BufferedStream的合并操作是一个循环读取子文件内容然后复制写入最终文件的过程,此过程会从文件系统中读取数据到内存中,之后再写入文件系统,比较低效。

一种更高效的合并方式是利用Java nio库中FileChannel类的transferTo方法进行合并。此方法可以利用很多操作系统直接从文件缓存传输字节的能力来优化传输速度。

实现方法:

 public static boolean mergeFiles(String[] fpaths, String resultPath) { if (fpaths == null || fpaths.length <1 || textutils.isempty(resultpath)) { return false; } if (fpaths.length== 1) new file(fpaths[0]).renameto(new file(resultpath)); file[] files=new file[fpaths.length]; for (int i < fpaths.length; ++) files[i]=new file(fpaths[i]); (textutils.isempty(fpaths[i]) !files[i].exists() !files[i].isfile()) file resultfile=new file(resultpath); try filechannel resultfilechannel=new fileoutputstream(resultfile, true).getchannel(); 0; blk=new fileinputstream(files[i]).getchannel(); resultfilechannel.transferfrom(blk, resultfilechannel.size(), blk.size()); blk.close(); resultfilechannel.close(); catch (filenotfoundexception e) e.printstacktrace(); (ioexception files[i].delete(); true; }< pre>

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

以上就是java合并多个文件的两种方法的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java