import java.io.*;
import java.util.*;
class SplitAndMerge
{
public static void main(String[] args) throws IOException
{
MegerInputStream();
}
//切割流
public static void SplitOutputStream() throws IOException
{
//创建文件对象
File file=new File("d:\\1.jpg");
//创建字节输入流
FileInputStream fis=new FileInputStream(file);
//创建字节输出流
FileOutputStream fos=null;
//创建缓冲区
byte[] buf=new byte[1024*512];
int len=0;
//定义计数器
int count=1;
while((len=fis.read(buf))!=-1)
{
//创建一个字节输出流,当存满缓冲区后,再创建另一个字节输出流
fos=new FileOutputStream("a."+"part"+(count++));
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
//合并流:用SequenceInputStream的构造方法Enumeration枚举来接收多个字节流
//因为Vector集合方法效率低,所以,用ArrayList集合代替Vector集合。
//替代的方法是:复写Enumeration方法的hasMoreElements()方法和nextElement()方法
public static void MegerInputStream() throws IOException
{
//创建ArrayList集合
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
//将四个流对象加入到集合中
for(int x=1;x<5;x++)
{
al.add(new FileInputStream("a.part"+x));
}
//创建Inerator迭代器
Iterator<FileInputStream> it=al.iterator();
//复写Enumeration枚举对象
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()
{
public boolean hasMoreElements()
{
return it.hasNext();
}
public FileInputStream nextElement()
{
return it.next();
}
};
//创建SequenceInputStream对象
SequenceInputStream sis=new SequenceInputStream(en);
//创建字节输出流
FileOutputStream fos=new FileOutputStream("b.jpg");
byte[] buf=new byte[1024*512];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
sis.close();
fos.close();
}
}
【java编程】IO流之切割流和另一种合并流方法
最新推荐文章于 2021-05-31 19:39:44 发布
本文详细介绍了流媒体处理中文件的切割与合并技术,包括使用字节流和缓冲区进行文件分割,以及如何通过SequenceInputStream实现多个文件的高效合并。此教程对于多媒体开发人员具有实际应用价值。
870

被折叠的 条评论
为什么被折叠?



