SequenceInputStream 合成器的运用
import java.io.*;
import java.util.*;
/**
* 自定义的枚举类 支持元素FileInputStream,体现在nextElement()方法上
* 不要晕:类内的私有数据成员支持元素String,我们主要看自定义类上的泛型是FileInputStream,以及体现到方法nextElement()上的返回类型
*/
class MyEnumeration implements Enumeration<FileInputStream>
{
private Enumeration<String> files;
public MyEnumeration(Vector<String> files){
this.files = files.elements();
}
public boolean hasMoreElements(){
return files.hasMoreElements();
}
public FileInputStream nextElement(){
try{
return new FileInputStream(files.nextElement());
}catch(Exception e){
return null;
}
}
}
public class SequenceInputStreamDemo
{
public static void main(String[] args)
{
int c;
Vector<String> v = new Vector();
v.addElement("file1.txt");
v.addElement("file2.txt");
v.addElement("file3.txt");
MyEnumeration en = new MyEnumeration(v);
try(InputStream in = new SequenceInputStream(en)){
while((c=in.read())!=-1){
System.out.print((char)c);
}
}catch(Exception e){}
}
}