/*
 * Copyright (c) 1996, 2021, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code 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.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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 in the LICENSE file that
 * accompanied this code).
 *
 * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package java.io;


Abstract class for reading filtered character streams. The abstract class FilterReader itself provides default methods that pass all requests to the contained stream. Subclasses of FilterReader should override some of these methods and may also provide additional methods and fields.
Author: Mark Reinhold
Since: 1.1
/** * Abstract class for reading filtered character streams. * The abstract class {@code FilterReader} itself * provides default methods that pass all requests to * the contained stream. Subclasses of {@code FilterReader} * should override some of these methods and may also provide * additional methods and fields. * * @author Mark Reinhold * @since 1.1 */
public abstract class FilterReader extends Reader {
The underlying character-input stream.
/** * The underlying character-input stream. */
protected Reader in;
Creates a new filtered reader.
Params:
  • in – a Reader object providing the underlying stream.
Throws:
/** * Creates a new filtered reader. * * @param in a Reader object providing the underlying stream. * @throws NullPointerException if {@code in} is {@code null} */
protected FilterReader(Reader in) { super(in); this.in = in; }
Reads a single character.
Throws:
  • IOException – If an I/O error occurs
/** * Reads a single character. * * @throws IOException If an I/O error occurs */
public int read() throws IOException { return in.read(); }
{@inheritDoc}
Throws:
/** * {@inheritDoc} * @throws IndexOutOfBoundsException {@inheritDoc} */
public int read(char[] cbuf, int off, int len) throws IOException { return in.read(cbuf, off, len); }
{@inheritDoc}
Throws:
  • IllegalArgumentException – If n is negative and the contained Reader's skip method throws an IllegalArgumentException for a negative parameter
/** * {@inheritDoc} * * @throws IllegalArgumentException If {@code n} is negative and the * contained {@code Reader}'s {@code skip} method throws an * IllegalArgumentException for a negative parameter */
public long skip(long n) throws IOException { return in.skip(n); }
Tells whether this stream is ready to be read.
Throws:
  • IOException – If an I/O error occurs
/** * Tells whether this stream is ready to be read. * * @throws IOException If an I/O error occurs */
public boolean ready() throws IOException { return in.ready(); }
Tells whether this stream supports the mark() operation.
/** * Tells whether this stream supports the mark() operation. */
public boolean markSupported() { return in.markSupported(); }
Marks the present position in the stream.
Throws:
  • IOException – If an I/O error occurs
/** * Marks the present position in the stream. * * @throws IOException If an I/O error occurs */
public void mark(int readAheadLimit) throws IOException { in.mark(readAheadLimit); }
Resets the stream.
Throws:
  • IOException – If an I/O error occurs
/** * Resets the stream. * * @throws IOException If an I/O error occurs */
public void reset() throws IOException { in.reset(); } public void close() throws IOException { in.close(); } }