java 流操作对文件的分割和合并的实例详解
java流操作对文件的分割和合并的实例详解
学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并。
下面是代码:
packagecom.dufy.file; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.SequenceInputStream; importjava.util.ArrayList; importjava.util.Collections; importjava.util.Enumeration; importjava.util.List; /** *文件的切割和合并 *1.要切割和合并文件:主要考虑的就是文件的源地址,目标地址,暂存文件地址和文件名称 *2.切割文件:判断给的暂存地址是否存在,不存在,则创建;从源地址中读出文件,按照给定的大小进行文件的切割操作放入暂存地址中 *3.合并文件:判断给定的目标地址是否存在,不存在,则创建;定义List集合将暂存地址中的文件全部读取出来,放到list集合中 *然后使用Enumeration列举出所有文件,合并流合并文件 *最后写入到目标的地址中 *注:本例子中所有的异常都采用抛出的方式处理 *@authoraflyun * */ publicclassTestFileCutUnion{ publicstaticvoidmain(String[]args)throwsIOException{ StringfSrc="D:/1.jpg";//源文件的目录 StringfDir="D:/1";//目标文件的目录 StringfTemp="D:/2";//暂存文件的目录 FilesrcFile=newFile(fSrc); FiledirFile=newFile(fDir); FiletempFile=newFile(fTemp); StringfileName=srcFile.getName();//获取文件的名称 cutFile(srcFile,tempFile);//调用分割方法 unionFile(dirFile,tempFile,fileName);//调用合并方法 } /** *切割文件 *@paramsrcFile *@paramtempFile *@throwsIOException */ publicstaticvoidcutFile(FilesrcFile,FiletempFile)throwsIOException{ //读取源地址文件 FileInputStreamfis=newFileInputStream(srcFile); FileOutputStreamfos=null; //是否为文件,不是就创建 if(!tempFile.isFile()){ tempFile.mkdirs(); } byte[]b=newbyte[100]; intlen=0; intcount=0; while((len=fis.read(b))!=-1){ intnum=count++; //写入暂存地址目录中 fos=newFileOutputStream(newFile(tempFile,num+".part")); fos.write(b,0,len); } fos.flush(); fos.close(); fis.close(); System.out.println("分割完成!"); } /** *合并文件 *@paramdirFile *@paramtempFile *@paramfileName *@throwsIOException */ publicstaticvoidunionFile(FiledirFile,FiletempFile,StringfileName)throwsIOException{ //判断目标地址是否存在,不存在则创建 if(!dirFile.isFile()){ dirFile.mkdirs(); } Listlist=newArrayList (); //获取暂存地址中的文件 File[]files=tempFile.listFiles(); for(inti=0;i eum=Collections.enumeration(list); //SequenceInputStream合并流合并文件 SequenceInputStreamsis=newSequenceInputStream(eum); FileOutputStreamfos=newFileOutputStream(newFile(dirFile,fileName)); byte[]by=newbyte[100]; intlen; while((len=sis.read(by))!=-1){ fos.write(by,0,len); } fos.flush(); fos.close(); sis.close(); System.out.println("合并完成!"); } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!