home *** CD-ROM | disk | FTP | other *** search
Java Source | 1996-05-03 | 4.9 KB | 149 lines |
- /*
- * @(#)FilterInputStream.java 1.13 95/12/19 Jonathan Payne
- *
- * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software
- * and its documentation for NON-COMMERCIAL purposes and without
- * fee is hereby granted provided that this copyright notice
- * appears in all copies. Please refer to the file "copyright.html"
- * for further important copyright and licensing information.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
- */
-
- package java.io;
-
- /**
- * Abstract class representing a filtered input stream of bytes.
- * This class is the basis for enhancing input stream functionality.
- * It allows multiple input stream filters to be chained together,
- * each providing additional functionality.
- * @version 1.13, 19 Dec 1995
- * @author Jonathan Payne
- */
- public
- class FilterInputStream extends InputStream {
- /**
- * The actual input stream.
- */
- protected InputStream in;
-
- /**
- * Creates an input stream filter.
- * @param in the input stream
- */
- protected FilterInputStream(InputStream in) {
- this.in = in;
- }
-
- /**
- * Reads a byte. Will block if no input is available.
- * @return the byte read, or -1 if the end of the
- * stream is reached.
- * @exception IOException If an I/O error has occurred.
- */
- public int read() throws IOException {
- return in.read();
- }
-
- /**
- * Reads into an array of bytes.
- * Blocks until some input is available.
- * @param b the buffer into which the data is read
- * @return the actual number of bytes read. Returns -1
- * when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
- */
- public int read(byte b[]) throws IOException {
- return read(b, 0, b.length);
- }
-
- /**
- * Reads into an array of bytes.
- * Blocks until some input is available.
- * This method should be overridden in a subclass for
- * efficiency (the default implementation reads 1 byte
- * at a time).
- * @param b the buffer into which the data is read
- * @param off the start offset of the data
- * @param len the maximum number of bytes read
- * @return the actual number of bytes read. Returns -1
- * when the end of the stream is reached.
- * @exception IOException If an I/O error has occurred.
- */
- public int read(byte b[], int off, int len) throws IOException {
- return in.read(b, off, len);
- }
-
- /**
- * Skips bytes of input.
- * @param n bytes to be skipped
- * @return actual number of bytes skipped
- * @exception IOException If an I/O error has occurred.
- */
- public long skip(long n) throws IOException {
- return in.skip(n);
- }
-
- /**
- * Returns the number of bytes that can be read
- * without blocking.
- * @return the number of available bytes
- */
- public int available() throws IOException {
- return in.available();
- }
-
- /**
- * Closes the input stream. Must be called
- * to release any resources associated with
- * the stream.
- * @exception IOException If an I/O error has occurred.
- */
- public void close() throws IOException {
- in.close();
- }
-
- /**
- * Marks the current position in the input stream. A subsequent
- * call to reset() will reposition the stream at the last
- * marked position so that subsequent reads will re-read
- * the same bytes. The stream promises to allow readlimit bytes
- * to be read before the mark position gets invalidated.
- * @param readlimit the maximum limit of bytes allowed tobe read before the
- * mark position becomes invalid.
- */
- public synchronized void mark(int readlimit) {
- in.mark(readlimit);
- }
-
- /**
- * Repositions the stream to the last marked position. If the
- * stream has not been marked, or if the mark has been invalidated,
- * an IOException is thrown. Stream marks are intended to be used in
- * situations where you need to read ahead a little to see what's in
- * the stream. Often this is most easily done by invoking some
- * general parser. If the stream is of the type handled by the
- * parse, it just chugs along happily. If the stream is not of
- * that type, the parser should toss an exception when it fails.
- * If this happens within readlimit bytes, it allows the outer
- * code to reset the stream and try another parser.
- */
- public synchronized void reset() throws IOException {
- in.reset();
- }
-
- /**
- * Returns true if this stream type supports mark/reset.
- */
- public boolean markSupported() {
- return in.markSupported();
- }
- }
-