FileDocCategorySizeDatePackage
FilterInputStream.javaAPI DocAndroid 1.5 API7588Wed May 06 22:41:04 BST 2009java.io

FilterInputStream

public class FilterInputStream extends InputStream
Wraps an existing {@link InputStream} and performs some transformation on the input data while it is being read. Transformations can be anything from a simple byte-wise filtering input data to an on-the-fly compression or decompression of the underlying stream. Input streams that wrap another input stream and provide some additional functionality on top of it usually inherit from this class.
see
FilterOutputStream
since
Android 1.0

Fields Summary
protected volatile InputStream
in
The source input stream that is filtered.
Constructors Summary
protected FilterInputStream(InputStream in)
Constructs a new {@code FilterInputStream} with the specified input stream as source.

param
in the non-null InputStream to filter reads on.
since
Android 1.0

        super();
        this.in = in;
    
Methods Summary
public intavailable()
Returns the number of bytes that are available before this stream will block.

return
the number of bytes available before blocking.
throws
IOException if an error occurs in this stream.
since
Android 1.0

        return in.available();
    
public voidclose()
Closes this stream. This implementation closes the filtered stream.

throws
IOException if an error occurs while closing this stream.
since
Android 1.0

        in.close();
    
public synchronized voidmark(int readlimit)
Sets a mark position in this stream. The parameter {@code readlimit} indicates how many bytes can be read before the mark is invalidated. Sending {@code reset()} will reposition this stream back to the marked position, provided that {@code readlimit} has not been surpassed.

This implementation sets a mark in the filtered stream.

param
readlimit the number of bytes that can be read from this stream before the mark is invalidated.
see
#markSupported()
see
#reset()
since
Android 1.0

        in.mark(readlimit);
    
public booleanmarkSupported()
Indicates whether this stream supports {@code mark()} and {@code reset()}. This implementation returns whether or not the filtered stream supports marking.

return
{@code true} if {@code mark()} and {@code reset()} are supported, {@code false} otherwise.
see
#mark(int)
see
#reset()
see
#skip(long)
since
Android 1.0

        return in.markSupported();
    
public intread()
Reads a single byte from the filtered stream and returns it as an integer in the range from 0 to 255. Returns -1 if the end of this stream has been reached.

return
the byte read or -1 if the end of the filtered stream has been reached.
throws
IOException if the stream is closed or another IOException occurs.
since
Android 1.0

        return in.read();
    
public intread(byte[] buffer)
Reads bytes from this stream and stores them in the byte array {@code buffer}. Returns the number of bytes actually read or -1 if no bytes were read and the end of this stream was encountered. This implementation reads bytes from the filtered stream.

param
buffer the byte array in which to store the read bytes.
return
the number of bytes actually read or -1 if the end of the filtered stream has been reached while reading.
throws
IOException if this stream is closed or another IOException occurs.
since
Android 1.0

        return read(buffer, 0, buffer.length);
    
public intread(byte[] buffer, int offset, int count)
Reads at most {@code count} bytes from this stream and stores them in the byte array {@code buffer} starting at {@code offset}. Returns the number of bytes actually read or -1 if no bytes have been read and the end of this stream has been reached. This implementation reads bytes from the filtered stream.

param
buffer the byte array in which to store the bytes read.
param
offset the initial position in {@code buffer} to store the bytes read from this stream.
param
count the maximum number of bytes to store in {@code buffer}.
return
the number of bytes actually read or -1 if the end of the filtered stream has been reached while reading.
throws
IOException if this stream is closed or another I/O error occurs.
since
Android 1.0

        return in.read(buffer, offset, count);
    
public synchronized voidreset()
Resets this stream to the last marked location. This implementation resets the target stream.

throws
IOException if this stream is already closed, no mark has been set or the mark is no longer valid because more than {@code readlimit} bytes have been read since setting the mark.
see
#mark(int)
see
#markSupported()
since
Android 1.0

        in.reset();
    
public longskip(long count)
Skips {@code count} number of bytes in this stream. Subsequent {@code read()}'s will not return these bytes unless {@code reset()} is used. This implementation skips {@code count} number of bytes in the filtered stream.

param
count the number of bytes to skip.
return
the number of bytes actually skipped.
throws
IOException if this stream is closed or another IOException occurs.
see
#mark(int)
see
#reset()
since
Android 1.0

        return in.skip(count);