IO流--SequenceInputStream序列化流的应用--文件合并

本文介绍如何使用Java的SequenceInputStream类来合并多个文件。通过创建一个ArrayList来存储FileInputStream对象,然后利用Collections.enumeration()方法转换为枚举,最后用SequenceInputStream串联这些文件并写入到新的合并文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package cn.itheima.cway.IO;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;

public class MergerFile {

	/**需求:合并文件
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// 指定待合并文件的目录
		File file=new File("F:\\ss");
		mergerFile(file);

	}
	/**
	 * 功能:将part文件合并为一个文件
	 * 思路:
	 * 	1、需要读取part临时文件中的内容,所以,需要集合:ArrayList
	 * 	2、既然有读取,则需要文件读取流:FileInputStream
	 * 	3、既然是需要合并文件,则需要SequenceInputsteam
	 * 	4、最后需要把集合中的内容输出到一个文件,则需要输出流:FileOutputStream
	 * @param dec
	 * @throws IOException
	 */
	
	public static void mergerFile(File dec) throws IOException
	{
		//创建一个集合,用于存放读取到的part文件内容
		ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
		
		//将part文件读取到集合中
		for(int i=1;i<=4;i++)
		{
			al.add(new FileInputStream(new File(dec,i+".part")));
		}
		
		//合并后的文件名:
		File dir=new File(dec,"B.mp3");
		if(!dir.exists())
			dir.createNewFile();
		
		//把集合中的元素转换为枚举
		Enumeration<FileInputStream> en=Collections.enumeration(al);
		
		//创建序列化输入流,去读取part文件(碎片文件)的内容
		SequenceInputStream	 sis=new SequenceInputStream(en);
		
		//创建一个输出流,用于保存合并后的文件内容
		FileOutputStream fos=new FileOutputStream(dir);
		
		int len=0;
		byte[] buf=new byte[1024];
		
		while((len=sis.read(buf))!=-1)
		{
			fos.write(buf,0,len);
			
		}
		
		fos.close();
		sis.close();
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值