博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
切割大文件与合并文件
阅读量:5311 次
发布时间:2019-06-14

本文共 2283 字,大约阅读时间需要 7 分钟。

题目:将一个大文件切割成指定大小的小文件。最后再将其合并

  切割文件思路:1.明确要切割成后每个文件的大小

     2.当写入指定大小的内容后,新建一个流接着写入文件。

  

public static void cutFile() throws IOException    {        File f = new File("D:\\Java\\工具包\\Eclipse安装包\\eclipse-jee-luna-R-win32.zip");                //分割后每个每个文件的大小为100M        long oneSize = 100*1024*1024;                //读取文件        FileInputStream bis = new FileInputStream(f);                byte[] buff = new byte[1024*1024];        int len = 0;                int i=1;                FileOutputStream fos = new FileOutputStream("D:\\eclipse.rar.part"+i);  //第一个流                long max = oneSize;        while((len = bis.read(buff))!=-1)        {            fos.write(buff,0,len);            max -= len;                          if(max<=0)  //判断文件大小是否达到100M(指定大小)            {                fos = new FileOutputStream("D:\\eclipse.rar.part"+(++i));                max = oneSize;(因为流已经是新的了,文件大小应该重置为100M)            }        }        System.out.println("切割完毕...");                bis.close();        fos.close();    }

合并文件使用 SequenceInputStream 就OK了,但是不要用 Vector,效率太低了,可以使用ArrayList

public static void heBin() throws IOException    {        ArrayList
arr = new ArrayList
(); for(int i=1;i<4;i++) { arr.add(new FileInputStream("D:\\eclipse.rar.part"+i)); } Iterator
it = arr.iterator(); Enumeration
en = new Enumeration
() { public boolean hasMoreElements() { return it.hasNext(); } public FileInputStream nextElement() { return it.next(); } }; SequenceInputStream sis = new SequenceInputStream(en); byte[] buff = new byte[1024*1024]; BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\eclipseAll.rar")); int len = 0; while((len=sis.read(buff))!=-1) { bos.write(buff,0,len); bos.flush(); } System.out.println("合并完成..."); sis.close(); bos.close(); }

 

转载于:https://www.cnblogs.com/alwaysJP/p/8094067.html

你可能感兴趣的文章
linux下打开windows txt文件中文乱码问题 (转载)
查看>>
JVM菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
查看>>
Spring Boot中使用Swagger2构建强大的RESTful API文档
查看>>
怎么看吉他简谱
查看>>
java_流程控制
查看>>
解决Azure中COULD NOT LOAD FILE OR ASSEMBLY问题
查看>>
工厂模式小结
查看>>
storm+Calcite
查看>>
四、抽象类
查看>>
[第九章]设计模式
查看>>
OpenCV——LBP(Local Binary Patterns)特征检测
查看>>
模糊控制——(4)Sugeno模糊模型
查看>>
树莓派.安装Redis环境
查看>>
小程序加载图片的坑
查看>>
jquery二维码
查看>>
逻辑回归
查看>>
MYSQL Range
查看>>
css 伪类选择器:checked实例讲解
查看>>
Redis入门篇
查看>>
Web服务器(Apache)虚拟主机的配置
查看>>