filterinputstream.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 244 行

JAVA
244
字号
/* * @(#)FilterInputStream.java	1.30 06/10/10 * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER   *    * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License version   * 2 only, as published by the Free Software Foundation.    *    * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * General Public License version 2 for more details (a copy is   * included at /legal/license.txt).    *    * You should have received a copy of the GNU General Public License   * version 2 along with this work; if not, write to the Free Software   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA    *    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa   * Clara, CA 95054 or visit www.sun.com if you need additional   * information or have any questions.  * */package java.io;/** * A <code>FilterInputStream</code> contains * some other input stream, which it uses as * its  basic source of data, possibly transforming * the data along the way or providing  additional * functionality. The class <code>FilterInputStream</code> * itself simply overrides all  methods of * <code>InputStream</code> with versions that * pass all requests to the contained  input * stream. Subclasses of <code>FilterInputStream</code> * may further override some of  these methods * and may also provide additional methods * and fields. * * @author  Jonathan Payne * @version 1.23, 02/02/00 * @since   JDK1.0 */publicclass FilterInputStream extends InputStream {    /**     * The input stream to be filtered.      */    protected InputStream in;    /**     * Creates a <code>FilterInputStream</code>     * by assigning the  argument <code>in</code>     * to the field <code>this.in</code> so as     * to remember it for later use.     *     * @param   in   the underlying input stream, or <code>null</code> if      *          this instance is to be created without an underlying stream.     */    protected FilterInputStream(InputStream in) {	this.in = in;    }    /**     * Reads the next byte of data from this input stream. The value      * byte is returned as an <code>int</code> in the range      * <code>0</code> to <code>255</code>. If no byte is available      * because the end of the stream has been reached, the value      * <code>-1</code> is returned. This method blocks until input data      * is available, the end of the stream is detected, or an exception      * is thrown.      * <p>     * This method     * simply performs <code>in.read()</code> and returns the result.     *     * @return     the next byte of data, or <code>-1</code> if the end of the     *             stream is reached.     * @exception  IOException  if an I/O error occurs.     * @see        java.io.FilterInputStream#in     */    public int read() throws IOException {	return in.read();    }    /**     * Reads up to <code>byte.length</code> bytes of data from this      * input stream into an array of bytes. This method blocks until some      * input is available.      * <p>     * This method simply performs the call     * <code>read(b, 0, b.length)</code> and returns     * the  result. It is important that it does     * <i>not</i> do <code>in.read(b)</code> instead;     * certain subclasses of  <code>FilterInputStream</code>     * depend on the implementation strategy actually     * used.     *     * @param      b   the buffer into which the data is read.     * @return     the total number of bytes read into the buffer, or     *             <code>-1</code> if there is no more data because the end of     *             the stream has been reached.     * @exception  IOException  if an I/O error occurs.     * @see        java.io.FilterInputStream#read(byte[], int, int)     */    public int read(byte b[]) throws IOException {	return read(b, 0, b.length);    }    /**     * Reads up to <code>len</code> bytes of data from this input stream      * into an array of bytes. This method blocks until some input is      * available.      * <p>     * This method simply performs <code>in.read(b, off, len)</code>      * and returns the result.     *     * @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 total number of bytes read into the buffer, or     *             <code>-1</code> if there is no more data because the end of     *             the stream has been reached.     * @exception  IOException  if an I/O error occurs.     * @see        java.io.FilterInputStream#in     */    public int read(byte b[], int off, int len) throws IOException {	return in.read(b, off, len);    }    /**     * Skips over and discards <code>n</code> bytes of data from the      * input stream. The <code>skip</code> method may, for a variety of      * reasons, end up skipping over some smaller number of bytes,      * possibly <code>0</code>. The actual number of bytes skipped is      * returned.      * <p>     * This method     * simply performs <code>in.skip(n)</code>.     *     * @param      n   the number of bytes to be skipped.     * @return     the actual number of bytes skipped.     * @exception  IOException  if an I/O error occurs.     */    public long skip(long n) throws IOException {	return in.skip(n);    }    /**     * Returns the number of bytes that can be read from this input      * stream without blocking.      * <p>     * This method     * simply performs <code>in.available()</code> and     * returns the result.     *     * @return     the number of bytes that can be read from the input stream     *             without blocking.     * @exception  IOException  if an I/O error occurs.     * @see        java.io.FilterInputStream#in     */    public int available() throws IOException {	return in.available();    }    /**     * Closes this input stream and releases any system resources      * associated with the stream.      * This     * method simply performs <code>in.close()</code>.     *     * @exception  IOException  if an I/O error occurs.     * @see        java.io.FilterInputStream#in     */    public void close() throws IOException {	in.close();    }    /**     * Marks the current position in this input stream. A subsequent      * call to the <code>reset</code> method repositions this stream at      * the last marked position so that subsequent reads re-read the same bytes.     * <p>     * The <code>readlimit</code> argument tells this input stream to      * allow that many bytes to be read before the mark position gets      * invalidated.      * <p>     * This method simply performs <code>in.mark(readlimit)</code>.     *     * @param   readlimit   the maximum limit of bytes that can be read before     *                      the mark position becomes invalid.     * @see     java.io.FilterInputStream#in     * @see     java.io.FilterInputStream#reset()     */    public synchronized void mark(int readlimit) {	in.mark(readlimit);    }    /**     * Repositions this stream to the position at the time the      * <code>mark</code> method was last called on this input stream.      * <p>     * This method     * simply performs <code>in.reset()</code>.     * <p>     * 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.     *     * @exception  IOException  if the stream has not been marked or if the     *               mark has been invalidated.     * @see        java.io.FilterInputStream#in     * @see        java.io.FilterInputStream#mark(int)     */    public synchronized void reset() throws IOException {	in.reset();    }    /**     * Tests if this input stream supports the <code>mark</code>      * and <code>reset</code> methods.      * This method     * simply performs <code>in.markSupported()</code>.     *     * @return  <code>true</code> if this stream type supports the     *          <code>mark</code> and <code>reset</code> method;     *          <code>false</code> otherwise.     * @see     java.io.FilterInputStream#in     * @see     java.io.InputStream#mark(int)     * @see     java.io.InputStream#reset()     */    public boolean markSupported() {	return in.markSupported();    }}

⌨️ 快捷键说明

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