Top Description Fields Constructors Methods
java.io

public Class FilterOutputStream

extends OutputStream
Class Inheritance
Known Direct Subclasses
java.io.PrintStream, java.security.DigestOutputStream, java.util.zip.CheckedOutputStream, java.util.zip.DeflaterOutputStream, java.util.zip.InflaterOutputStream, javax.crypto.CipherOutputStream, sun.net.www.protocol.http.HttpURLConnection.StreamingOutputStream, sun.net.www.http.HttpCaptureOutputStream, sun.net.www.protocol.ftp.FtpURLConnection.FtpOutputStream, java.util.Base64.EncOutputStream, java.io.BufferedOutputStream, java.io.DataOutputStream
Imports
java.util.Objects

This class is the superclass of all classes that filter output streams. These streams sit on top of an already existing output stream (the underlying output stream) which it uses as its basic sink of data, but possibly transforming the data along the way or providing additional functionality.

The class FilterOutputStream itself simply overrides all methods of OutputStream with versions that pass all requests to the underlying output stream. Subclasses of FilterOutputStream may further override some of these methods as well as provide additional methods and fields.

Author
Jonathan Payne
Since
1.0

Field Summary

Modifier and TypeField and Description
private volatile boolean
closed

Whether the stream is closed; implicitly initialized to false.

private final Object
closeLock

Object used to prevent a race on the 'closed' instance variable.

protected OutputStream
out

The underlying output stream to be filtered.

Constructor Summary

AccessConstructor and Description
public
FilterOutputStream(OutputStream
the underlying output stream to be assigned to the field this.out for later use, or null if this instance is to be created without an underlying stream.
out
)

Creates an output stream filter built on top of the specified underlying output stream.

Method Summary

Modifier and TypeMethod and Description
public void
close()

Overrides java.io.OutputStream.close.

Implements java.io.Closeable.close.

Closes this output stream and releases any system resources associated with the stream.

public void
flush()

Overrides java.io.OutputStream.flush.

Implements java.io.Flushable.flush.

Flushes this output stream and forces any buffered output bytes to be written out to the stream.

public void
write(int
the byte.
b
)

Implements abstract java.io.OutputStream.write.

Writes the specified byte to this output stream.

public void
write(byte[]
the data to be written.
b
)

Overrides java.io.OutputStream.write.

Writes b.length bytes to this output stream.

public void
write(byte[]
the data.
b
,
int
the start offset in the data.
off
,
int
the number of bytes to write.
len
)

Overrides java.io.OutputStream.write.

Writes len bytes from the specified byte array starting at offset off to this output stream.

Inherited from java.io.OutputStream:
nullOutputStream

Field Detail

closedback to summary
private volatile boolean closed

Whether the stream is closed; implicitly initialized to false.

closeLockback to summary
private final Object closeLock

Object used to prevent a race on the 'closed' instance variable.

outback to summary
protected OutputStream out

The underlying output stream to be filtered.

Constructor Detail

FilterOutputStreamback to summary
public FilterOutputStream(OutputStream out)

Creates an output stream filter built on top of the specified underlying output stream.

Parameters
out:OutputStream

the underlying output stream to be assigned to the field this.out for later use, or null if this instance is to be created without an underlying stream.

Method Detail

closeback to summary
public void close() throws IOException

Overrides java.io.OutputStream.close.

Implements java.io.Closeable.close.

Closes this output stream and releases any system resources associated with the stream.

Implementation Specification

When not already closed, the close method of FilterOutputStream calls its flush method, and then calls the close method of its underlying output stream.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
See Also
java.io.FilterOutputStream#flush(), java.io.FilterOutputStream#out
flushback to summary
public void flush() throws IOException

Overrides java.io.OutputStream.flush.

Implements java.io.Flushable.flush.

Flushes this output stream and forces any buffered output bytes to be written out to the stream.

Implementation Specification

The flush method of FilterOutputStream calls the flush method of its underlying output stream.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
See Also
java.io.FilterOutputStream#out
writeback to summary
public void write(int b) throws IOException

Implements abstract java.io.OutputStream.write.

Writes the specified byte to this output stream.

The write method of FilterOutputStream calls the write method of its underlying output stream, that is, it performs out.write(b).

Implements the abstract write method of OutputStream.

Parameters
b:int

Doc from java.io.OutputStream.write.

the byte.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
writeback to summary
public void write(byte[] b) throws IOException

Overrides java.io.OutputStream.write.

Writes b.length bytes to this output stream.

Implementation Specification

The write method of FilterOutputStream calls its write method of three arguments with the arguments b, 0, and b.length.

Implementation Note

Note that this method does not call the one-argument write method of its underlying output stream with the single argument b.

Parameters
b:byte[]

the data to be written.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
See Also
java.io.FilterOutputStream#write(byte[], int, int)
writeback to summary
public void write(byte[] b, int off, int len) throws IOException

Overrides java.io.OutputStream.write.

Writes len bytes from the specified byte array starting at offset off to this output stream.

Implementation Specification

The write method of FilterOutputStream calls the write method of one argument on each byte to output.

Implementation Note

Note that this method does not call the write method of its underlying output stream with the same arguments. Subclasses of FilterOutputStream should provide a more efficient implementation of this method.

Parameters
b:byte[]

Doc from java.io.OutputStream.write.

the data.

off:int

Doc from java.io.OutputStream.write.

the start offset in the data.

len:int

Doc from java.io.OutputStream.write.

the number of bytes to write.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
IndexOutOfBoundsException:
If off is negative, len is negative, or len is greater than b.length - off
See Also
java.io.FilterOutputStream#write(int)