java中使用IO将文件切割后保存(FileInputStream、FileOutputStream)_java文件流分割保存代码-程序员宅基地

技术标签: 切割文件  IO流  

直接代码:

public class Demo {
	public static void main(String[] args) throws IOException {
		
		split(new File("c:\\a.mp3"), 10, new File("c:\\"));
		System.out.println("切割完毕");

		LinkedHashSet<InputStream> hs = new LinkedHashSet<InputStream>();	
		hs.add(new FileInputStream(new File("c:\\part.1.mp3")));
		hs.add(new FileInputStream(new File("c:\\part.2.mp3")));
		hs.add(new FileInputStream(new File("c:\\part.3.mp3")));
		hs.add(new FileInputStream(new File("c:\\part.4.mp3")));
		merage(hs, new File("c:\\merage.mp3"));
		System.out.println("合并完毕");
	}

	private static void merage(LinkedHashSet<InputStream> hs, File dest)
			throws IOException {

		final Iterator<InputStream> it = hs.iterator();
		FileOutputStream fos = new FileOutputStream(dest);
		SequenceInputStream seq = new SequenceInputStream(
				new Enumeration<InputStream>() {

					@Override
					public boolean hasMoreElements() {

						return it.hasNext();
					}

					@Override
					public InputStream nextElement() {
						return it.next();
					}
				});
		byte[] byt = new byte[1024 * 1024];
		int len = 0;
		while ((len = seq.read(byt)) != -1) {
			fos.write(byt, 0, len);
		}
		seq.close();
		fos.close();
	}

	// 1. 切割文件
	/*
	 * 切割文件,切割份数, 切割后保存路径
	 */
	private static void split(File src, int count, File dir) throws IOException {
		FileInputStream fis = new FileInputStream(src);
		FileOutputStream fos = null;
		byte[] byt = new byte[1024 * 1024];
		int len = 0;
		for (int i = 1; i <= count; i++) {
			len = fis.read(byt);
			if (len != -1) {
				fos = new FileOutputStream(dir + "part." + i + ".mp3");
				fos.write(byt, 0, len);
			}

			// fos.close();

		}
		fis.close();

	}
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ghjzzhg/article/details/76673714

智能推荐

1100多份全球各地的数据汇总,这是我目前看到的最全的数据资源_数据资源清单-程序员宅基地

文章浏览阅读380次。前两天一朋友给我发了一个excel文件,说是别人整理的数据资源。打开以后一看,内容太全了,是我目前看到的最全的一份数据资源列表。独乐乐不如众乐乐,分享出来让大家都受益一下吧。先给大家大致看看内容。整个Excel表按照按别,创建了10多个sheet页,每个页面一个数据类别,分别包括Global、Regional、 Country 、Thematic、 Event Disaster、 Type Disaster List、 Conflict 、Imagery、 Physical、 Conserv_数据资源清单

calloc和malloc区别、分析_malloc与calloc相同-程序员宅基地

文章浏览阅读780次。函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别 malloc()函数有一个参数,即要分配的内存空间的大小:void *malloc(size_t size); calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void *calloc(_malloc与calloc相同

每天工作计划_算法工作计划-程序员宅基地

文章浏览阅读251次。如果坚持每天刷题3道,就离1200 codeforce不远了这周主要看:数据结构与算法 c++描述这本书_算法工作计划

Python 中的时间处理包datetime和arrow_python datetime的时间戳和arrow的时间戳不一样-程序员宅基地

文章浏览阅读1.8w次,点赞2次,收藏5次。Python 中的时间处理包datetime和arrow在获取贝壳分的时候用到了时间处理函数,想要获取上个月时间包括年、月、日等# 方法一:today = datetime.date.today() # 1. 获取「今天」first = today.replace(day=1) # 2. 获取当前月的第一天last_month = first - datetime.ti..._python datetime的时间戳和arrow的时间戳不一样

求字符串可匹配的最大长度_最长连续字符匹配-程序员宅基地

文章浏览阅读4.1k次。如:text=“abcdlijkfgd”,query=“abcdefg”,最大匹配为“abcd”_最长连续字符匹配

机器学习 Machine Learning- 吴恩达Andrew Ng 第11~15课总结-程序员宅基地

文章浏览阅读200次。YouTube课程地址https://www.youtube.com/playlist?list=PLOXON7BTL9IW7Ggbc09jLqGmzkwPI4-3V截止2021-5-3, 有112 个视频1. 第11课 Gradient descent intuition, Linear regression with one variableGradient descent intuition 阶梯下降算法介绍:a 表示 learning rate, 学习下降的速度右边的函数 deriv

随便推点

音频播放模块在短视频开发中的方案解决及所需开发环境说明_小视频模块开发方案-程序员宅基地

文章浏览阅读569次。在短视频开发中,音频媒体播放模块是仅次于视频媒体播放的另一大模块,这段源码就是用于解决音频媒体播放问题的方案。音频媒体播放前,主播需用手机等直播设备对音频媒体进行采集,向文件中添加流式信息,通过适当的压缩算法进行压缩,推流至流媒体服务器储存,直到用户点击音频播放的瞬间完成拉流、解码才能进行播放。public void startPlay(ChatMessageBean bean, Stri..._小视频模块开发方案

虚幻UE4中Matinee基础:骨架网格教程_ue4骨骼网格体-程序员宅基地

文章浏览阅读9.1k次,点赞4次,收藏15次。本教程的目标是教你在如何在Matinee中使用骨架网格的一些基础知识。 您将学习如何连接和操纵骨架网格并使骨架网格物体播放动画。_ue4骨骼网格体

linux密码破解与开机加密_lunnx password-程序员宅基地

文章浏览阅读901次。破解登录密码 GRUB:在引导装载程序菜单上,键入[e] 来进入编辑模式。你会面对一个引导项目列表。查找其中类似以下输出的句行: kernel /vmlinuz-2.4.18-0.4 ro root=/dev/hda2按箭头键直到这一行被突出显示,然后按 [e]。你现在可在文本结尾处空一格再添加 single 来告诉 GRUB 引导单用户 Linux 模式。按 [Enter] _lunnx password

[转]Socket send函数和recv函数详解_sendrecvgprs-程序员宅基地

文章浏览阅读760次。转载地址:http://hi.baidu.com/webeta/blog/item/4c04d109fdf21881d1581be8.html 引文:最近在wince5.0的设备上开发网络通信,因socket的send和recv的时间太长,而客户端不需要服务端的响应数据因此突发奇想,是否可以不用调用recv函数而直接去做其他的事情.刚开始使用的时候还成,速度倒是确实有提升.可最近用到一个操作,send函数后立刻就把GPRS网络断开了,服务器端一直无法收到客户端发送的数据,百思不得其解,google到一篇文章_sendrecvgprs

第七章 数组实验-程序员宅基地

文章浏览阅读973次。C语言设计实验报告试验项目:1、一维数组的运用2、二维数组的应用3、字符数组的应用姓名:李小玲  实验地点:514教室  实验时间:2019.5.29一、实验目的与要求7.3.1一维数组的运用实验1:写一个函数,对用随机函数产生的10个整数按从小到大的顺序排序(升序,用冒泡排序实现)1.定义一个一维数组,其大小为10,即它能存放10个数据。2..._c语言数组的应用实验

MyBatis-Configuration-程序员宅基地

文章浏览阅读58次。一、引用properties 配置文件db.propertiesdriver=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://192.168.8.136:3306/mybatisusername=rootpassword=rootmybatis-config.xml<!-- 外部 properties 配置文件 -..._mybatis整合configuration