package com.j2se.io;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
public class SequenceInputStreamDemo {
public static void main(String[] args) throws Exception{
//splitFileDemo();
mergeFileDemo();
}
/**
* 分割文件:分成4个部分
*/
private static void splitFileDemo() throws Exception{
// TODO Auto-generated method stub
FileInputStream fis=new FileInputStream("src/1.jpg");
byte[] buffer=new byte[1024*300];
int len=0,count=1;
FileOutputStream fos=null;
while((len=fis.read(buffer))!=-1){
fos=new FileOutputStream("src/"+(count++)+".part");
fos.write(buffer, 0, len);
fos.close();
}
}
/*
* 合并4个碎片文件,形成一个完整的图片文件
*/
public static void mergeFileDemo() throws Exception{
ArrayList<FileInputStream> list=new ArrayList<FileInputStream>();
for(int i=1;i<=4;i++){
list.add(new FileInputStream("src/"+i+".part"));
}
final Iterator<FileInputStream> it= list.iterator();
Enumeration<FileInputStream> em=new Enumeration<FileInputStream>() {
@Override
public FileInputStream nextElement() {
// TODO Auto-generated method stub
return it.next();
}
@Override
public boolean hasMoreElements() {
// TODO Auto-generated method stub
return it.hasNext();
}
};
SequenceInputStream sis=new SequenceInputStream(em);
FileOutputStream fos=new FileOutputStream("src/merge.jpg");
byte[] buffer=new byte[1024];
int len=0;
while((len=sis.read(buffer))!=-1){
fos.write(buffer, 0, len);
}
fos.close();
}
}
java基础之IO流中的SequenceInputStream
最新推荐文章于 2021-03-12 05:12:43 发布