java合并多个文件的两种方法
在java多个线程下载文件或处理较大文件是可能会切分成多个文件,处理完成后需要合并成一个文件。
Java中合并子文件最容易想到的就是利用BufferedStream进行读写。
利用BufferedStream合并多个文件
publicstaticbooleanmergeFiles(String[]fpaths,StringresultPath){ if(fpaths==null||fpaths.length<1||TextUtils.isEmpty(resultPath)){ returnfalse; } if(fpaths.length==1){ returnnewFile(fpaths[0]).renameTo(newFile(resultPath)); } File[]files=newFile[fpaths.length]; for(inti=0;i0){ outputStream.write(buffer,0,readcount); } inputStream.close(); } outputStream.close(); }catch(FileNotFoundExceptione){ e.printStackTrace(); returnfalse; }catch(IOExceptione){ e.printStackTrace(); returnfalse; } for(inti=0;i 利用nioFileChannel合并多个文件
BufferedStream的合并操作是一个循环读取子文件内容然后复制写入最终文件的过程,此过程会从文件系统中读取数据到内存中,之后再写入文件系统,比较低效。
一种更高效的合并方式是利用Javanio库中FileChannel类的transferTo方法进行合并。此方法可以利用很多操作系统直接从文件缓存传输字节的能力来优化传输速度。
实现方法:
publicstaticbooleanmergeFiles(String[]fpaths,StringresultPath){ if(fpaths==null||fpaths.length<1||TextUtils.isEmpty(resultPath)){ returnfalse; } if(fpaths.length==1){ returnnewFile(fpaths[0]).renameTo(newFile(resultPath)); } File[]files=newFile[fpaths.length]; for(inti=0;i以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。