java合并流与文件的分割合并示例
合并流:
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合并流与文件的分割合并示例相关推荐
- java 合并流_Java Stream 流实现合并操作示例
本文实例讲述了Java Stream 流实现合并操作.分享给大家供大家参考,具体如下: 1. 前言 Java Stream Api提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为 ...
- Java合并流实现简单的文件合并示例
合并流: SequenceInputStream: 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,以此类推,知道到达包含的最 ...
- java 合并流_Java Stream 流如何进行合并操作
1. 前言 Java Stream Api 提供了很多有用的 Api 让我们很方便将集合或者多个同类型的元素转换为流进行操作.今天我们来看看如何合并 Stream 流. 2. Stream 流的合并 ...
- java 合并流(SequenceInputStream)
需要两个源文件,还有输出的目标文件 SequenceInputStream: 将两个文件的内容合并成一个文件 该类提供的方法: SequenceInputStream(InputStream s1, ...
- java 合并流_使用流执行聚合
本系列的 第 1 部分 介绍了 Java SE 8 中添加的 java.util.stream 库.第二期文章将重点介绍 Streams 库的一个最重要的.灵活的方面 - 聚合和汇总数据的能力. &q ...
- java maven 读取 dbf 文件 生成 表结构 示例代码
介绍 通过读取一个文件夹下所有dbf文件 然后生成sql 依赖 <dependency><groupId>com.github.albfernandez</groupId ...
- java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解
java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...
- 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流
1.File类概述 File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作. 前面说到的"流",它只能操作数据,想 ...
- 6.6(java学习笔记)文件分割(IO综合例子)
基本思路: 文件分割:将一个文件分割成若干个独立的文件. 设置分割后小文件文件的字节数,然后读取被分割文件, 将对应的字节数写入分割后的小文件中. 使用seek定位下一次读取位置. 文件 ...
最新文章
- Error:CPACK_PACKAGE_VERSION does not match version provided by version.hpp header!
- Git - ‘假设未改变‘和‘跳过工作树‘之间的区别
- ubuntu 压缩率最高的软件_不用写采集规则也可以轻松采集网站文章,揭秘一款明泽文章采集软件的工作原理...
- 准备您的虚拟桌面--WinXp模板
- OpenGL绘制一个三角形的实例
- python中reshape_Numpy之reshape()使用详解
- 如何解决inline-block元素的空白间距
- yum 崩溃的解决方法
- html 椭圆特效,HTML帖图常用到的特效《椭圆形》(国外英语资料).doc
- 智能计算系统(学习笔记)-第三章深度学习
- 盛夏光年 - 江湖一剑客
- 为什么存png还有白色底_为什么导出png还是有白底
- python按任意键退出_python按任意键继续程序
- 苹果手机几月份最便宜_苹果手机越来越便宜了么?目前看来确实是这样的!
- ASP.NET Razor 简介
- vue点击把某个区域变成图片数据
- nagios mysql 并发_nagios监控mysql的connections和processlist
- 低代码发展现状调研和思考
- 电脑录音软件哪个好用?如何录制声音?
- “组织行为学”--串讲学习笔记