SequenceInputStream
SequenceInputStream extends InputStreamSequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
构造方法:
SequenceInputStream(Enumeration< ? extends InputStream> e) 通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。 SequenceInputStream(InputStream s1, InputStream s2) 通过记住这两个参数来初始化新创建的 SequenceInputStream(将按顺序读取这两个参数,先读取 s1,然后读取 s2),以提供从此 SequenceInputStream 读取的字节方法:
void close() 关闭此输入流并释放与此流关联的所有系统资源。 int read() 从此输入流中读取下一个数据字节。 int read(byte[] b, int off, int len) 将最多 len 个数据字节从此输入流读入 byte 数组。// 需求:把Test.java和test.txt的内容复制到Test3.java中 InputStream s1 = new FileInputStream("Test.java"); InputStream s2 = new FileInputStream("test.txt"); SequenceInputStream sis = new SequenceInputStream(s1, s2); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("Test3.java")); byte[] bys = new byte[1024]; int len = 0; while ((len = sis.read(bys)) != -1) { bos.write(bys, 0, len); } bos.close(); sis.close();
Vectorvector = new Vector (); InputStream s1 = new FileInputStream("Test.java"); InputStream s2 = new FileInputStream("Test.txt"); InputStream s3 = new FileInputStream("Test3.java"); vector.add(s1); vector.add(s2); vector.add(s3); Enumeration enumeration = vector.elements(); //SequenceInputStream(Enumeration< ? extends InputStream> e) //通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。 SequenceInputStream sequence = new SequenceInputStream(enumeration); //BufferedOutputStream 写操作 BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream("Test4.java")); byte[] bys = new byte[1024]; int len = 0; while ((len = sequence.read(bys)) != -1) { bos.write(bys, 0, len); } bos.close(); sequence.close(); }