inputstreamenumerator.java~2~

来自「java2参考大全上的例子的源码和自己的理解.」· JAVA~2~ 代码 · 共 55 行

JAVA~2~
55
字号
package sequenceinputstream;

/**
 SequenceInputStream类允许连接多个InputStream流。SequenceInputStream的构造不同于
 任何其他的InputStream。SequenceInputStream构造函数要么使用一对InputStream,要么用
 InputStream的一个Enumeration,显示如下:
 SequenceInputStream(InputStream first, InputStream second)
 SequenceInputStream(Enumeration streamEnum)
 操作上来说,该类满足读取完第一个InputStream后转去读取第二个流的读取要求。使
 用Enumeration的情况下,它将继续读取所有InputStream流直到最后一个被读完。
 下面是用SequenceInputStream输出两个文件内容的例子程序:
 */

// Demonstrate sequenced input.
import java.io.*;
import java.util.*;

class InputStreamEnumerator
    implements Enumeration {
  private Enumeration files;
  public InputStreamEnumerator(Vector files) {
    this.files = files.elements();
  }

  public boolean hasMoreElements() {
    return files.hasMoreElements();
  }

  public Object nextElement() {
    try {
      return new FileInputStream(files.nextElement().toString());
    }
    catch (Exception e) {
      return null;
    }
  }
}

class SequenceInputStreamDemo {
  public static void main(String args[]) throws Exception {
    int c;
    Vector files = new Vector();

    files.addElement("autoexec.bat");
    files.addElement("config.sys");
    InputStreamEnumerator e = new InputStreamEnumerator(files);
    InputStream input = new SequenceInputStream(e);

    while ( (c = input.read()) != -1) {
      System.out.print( (char) c);
    }
    input.close();
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?