Java中的使用枚举来合并序列流
/**
* 合并分割的文件
* 即:使用序列流来合并分割的文件
* 注意:合并文件时,必须按之前的分割的文件顺序去合并,不然会出现错误
* @throws IOException
*/
public static void merge()throws IOException{
File file1=new File("F:\\pic\\1.part");
File file2=new File("F:\\pic\\2.part");
///通常不适用Vector效率比较慢
/* Vector<FileInputStream> v=new Vector<FileInputStream>();
v.add(new FileInputStream(file1));
v.add(new FileInputStream(file2));*/
// Enumeration<FileInputStream> enu=Collections.enumeration(v);
// Enumeration<FileInputStream> enu=v.elements();
///////////////////////////////这种方法:匿名内部类 可以试试//////////////////////////
List<FileInputStream> list=new ArrayList<FileInputStream>();
list.add(new FileInputStream(file1));
list.add(new FileInputStream(file2));
final Iterator<FileInputStream> item=list.iterator();//必须加上常量
Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {
public FileInputStream nextElement() {
return item.next();
}
public boolean hasMoreElements() {
return item.hasNext();
}
};
SequenceInputStream sis=new SequenceInputStream(en);
// SequenceInputStream sis=new SequenceInputStream(enu);
FileOutputStream fos=new FileOutputStream("F:\\pic\\merge.jpg");
int len=0;
byte[]data=new byte[1024];
while(-1!=(len=sis.read(data))){
fos.write(data, 0, len);
fos.flush();
}
fos.close();
sis.close();
}