合并流:
SequenceInputStream表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

文件分割合并示例:

package com.booy;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;public class FileDivisionMergeDemo {public static void main(String[] args) {
//      File file = new File("D:\\test\\my\\我谁也没有等,谁也不会来.mp4");
//      division(file, 1024*1024*2);
//      System.out.println("文件分割成功");try {InputStream in1 = new FileInputStream(new File("D:\\test\\my\\1temp我谁也没有等,谁也不会来.mp4"));InputStream in2 = new FileInputStream(new File("D:\\test\\my\\2temp我谁也没有等,谁也不会来.mp4"));InputStream in3 = new FileInputStream(new File("D:\\test\\my\\3temp我谁也没有等,谁也不会来.mp4"));InputStream in4 = new FileInputStream(new File("D:\\test\\my\\4temp我谁也没有等,谁也不会来.mp4"));InputStream in5 = new FileInputStream(new File("D:\\test\\my\\5temp我谁也没有等,谁也不会来.mp4"));//集合工具类,内部实现使用了数组Vector<InputStream> v =new Vector<InputStream>();v.add(in1);v.add(in2);v.add(in3);v.add(in4);v.add(in5);Enumeration<InputStream> es = v.elements();merge(es);} catch (FileNotFoundException e) {e.printStackTrace();}}/*** 文件的分割* target:要分割的目标文件* cutSize:每个文件要分割的大小*/private static void division(File targetfile, long cutSize) {if(targetfile==null)return;//文件分割的次数,long类型转int需要强转int num = targetfile.length()/cutSize==0?(int)(targetfile.length()/cutSize):(int)(targetfile.length()/cutSize+1);try {BufferedInputStream in = new BufferedInputStream(new  FileInputStream(targetfile));BufferedOutputStream out= null;byte[] bytes = null;//每次要度的字节数int len = -1; //每次要读取的次数int count = 0;//每一个文件要读取的次数for(int i=0;i<num;i++) {out = new BufferedOutputStream(new FileOutputStream(new File("D:\\test\\my\\"+(i+1)+"temp")+targetfile.getName()));if(cutSize<=1024) {bytes = new byte[(int)cutSize];count=1;}else {bytes = new byte[1024];count=(int)(cutSize/1024);}while(count>0 && (len=in.read(bytes))!=-1) {out.write(bytes, 0, len);out.flush();count--;}if(cutSize/1024!=0) {bytes = new byte[(int) (cutSize%1024)];len=in.read(bytes);out.write(bytes, 0, len);                        }           }in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}//文件的合并private static void merge(Enumeration es) {//构造一个合并流SequenceInputStream sis= new SequenceInputStream(es);try {BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\test\\my\\谁也不会来.mp4"));byte[] bytes = new byte[1024];int len = -1;while((len=sis.read(bytes))!=-1) {bos.write(bytes, 0, len);bos.flush();}bos.close();sis.close();System.out.println("文件合并完成");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} }
}

java合并流与文件的分割合并示例相关推荐

  1. java 合并流_Java Stream 流实现合并操作示例

    本文实例讲述了Java Stream 流实现合并操作.分享给大家供大家参考,具体如下: 1. 前言 Java Stream Api提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为 ...

  2. Java合并流实现简单的文件合并示例

    合并流: SequenceInputStream:  表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,以此类推,知道到达包含的最 ...

  3. java 合并流_Java Stream 流如何进行合并操作

    1. 前言 Java Stream Api 提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作.今天我们来看看如何合并 Stream 流. 2. Stream 流的合并 ...

  4. java 合并流(SequenceInputStream)

    需要两个源文件,还有输出的目标文件 SequenceInputStream: 将两个文件的内容合并成一个文件 该类提供的方法: SequenceInputStream(InputStream s1, ...

  5. java 合并流_使用流执行聚合

    本系列的 第 1 部分 介绍了 Java SE 8 中添加的 java.util.stream 库.第二期文章将重点介绍 Streams 库的一个最重要的.灵活的方面 - 聚合和汇总数据的能力. &q ...

  6. java maven 读取 dbf 文件 生成 表结构 示例代码

    介绍 通过读取一个文件夹下所有dbf文件 然后生成sql 依赖 <dependency><groupId>com.github.albfernandez</groupId ...

  7. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

  8. 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流

    1.File类概述   File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作.   前面说到的"流",它只能操作数据,想 ...

  9. 6.6(java学习笔记)文件分割(IO综合例子)

    基本思路: 文件分割:将一个文件分割成若干个独立的文件.    设置分割后小文件文件的字节数,然后读取被分割文件, 将对应的字节数写入分割后的小文件中.     使用seek定位下一次读取位置. 文件 ...

最新文章

  1. Error:CPACK_PACKAGE_VERSION does not match version provided by version.hpp header!
  2. Git - ‘假设未改变‘和‘跳过工作树‘之间的区别
  3. ubuntu 压缩率最高的软件_不用写采集规则也可以轻松采集网站文章,揭秘一款明泽文章采集软件的工作原理...
  4. 准备您的虚拟桌面--WinXp模板
  5. OpenGL绘制一个三角形的实例
  6. python中reshape_Numpy之reshape()使用详解
  7. 如何解决inline-block元素的空白间距
  8. yum 崩溃的解决方法
  9. html 椭圆特效,HTML帖图常用到的特效《椭圆形》(国外英语资料).doc
  10. 智能计算系统(学习笔记)-第三章深度学习
  11. 盛夏光年 - 江湖一剑客
  12. 为什么存png还有白色底_为什么导出png还是有白底
  13. python按任意键退出_python按任意键继续程序
  14. 苹果手机几月份最便宜_苹果手机越来越便宜了么?目前看来确实是这样的!
  15. ASP.NET Razor 简介
  16. vue点击把某个区域变成图片数据
  17. nagios mysql 并发_nagios监控mysql的connections和processlist
  18. 低代码发展现状调研和思考
  19. 电脑录音软件哪个好用?如何录制声音?
  20. “组织行为学”--串讲学习笔记

热门文章

  1. MPU6050姿态解算1-DMP方式
  2. date.gettime()与时间的获取
  3. Mysql数据库报错1264
  4. Resource file and Source file
  5. 看涨期权计算函数实现(Python)
  6. 你该选择哪种编程语言来开发App呢?
  7. 鸿蒙系统脱离了安卓么,曝华为手机将脱离安卓系统,3月上线新系统全面改为鸿蒙内核!...
  8. Python基础:面向对象编程实战——简易图书管理系统
  9. 2020年最好的机器人学仿真工具软件汇总
  10. 今天开通了CNSD博客