home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1995 November
/
PCWK1195.iso
/
inne
/
win95
/
sieciowe
/
hotja32.lzh
/
hotjava
/
classsrc
/
java
/
io
/
inputstreamsequence.java
< prev
next >
Wrap
Text File
|
1995-08-11
|
1KB
|
84 lines
/*
* Copyright (c) 1994 by Sun Microsystems, Inc.
* All Rights Reserved.
*
* @(#)InputStreamSequence.java 1.4 95/01/31 94/10/25
*
* November 1994, Arthur van Hoff
*/
package java.io;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Vector;
/**
* Converts a sequence of input streams into an InputStream
*/
public
class InputStreamSequence extends InputStream {
Enumeration e;
InputStream in;
/**
* Constructor
*/
public InputStreamSequence(Enumeration e) {
this.e = e;
nextStream();
}
public InputStreamSequence(InputStream s1, InputStream s2) {
Vector v = new Vector(2);
v.addElement(s1);
v.addElement(s2);
e = v.elements();
nextStream();
}
final void nextStream() {
if (in != null) {
in.close();
}
in = e.hasMoreElements() ? (InputStream) e.nextElement() : null;
}
/**
* Reads, upon reaching an EOF, flips to the next stream.
*/
public int read() {
if (in == null) {
return -1;
}
int c = in.read();
if (c == -1) {
nextStream();
return read();
}
return c;
}
/**
* Reads, upon reaching an EOF, flips to the next stream.
*/
public int read(byte buf[], int pos, int len) {
if (in == null) {
return -1;
}
int n = in.read(buf, pos, len);
if (n <= 0) {
nextStream();
return read(buf, pos + n, len - n);
}
return n;
}
public void close() {
do {
nextStream();
} while (in != null);
}
}