Chapter 6. Filter Streams
Filter input streams read data from a preexisting input stream like a
FileInputStream
and have an opportunity to work
with or change the data before it is delivered to the client program.
Filter output streams write data to a preexisting output stream such
as a FileOutputStream
and have an opportunity to
work with or change the data before it is written onto the underlying
stream. Multiple filters can be chained onto a single underlying
stream. Filter streams are used for encryption, compression,
translation, buffering, and much more.
The word filter is derived by analogy from a water filter. A water filter sits between the pipe and faucet, pulling out impurities. A stream filter sits between the source of the data and its eventual destination and applies a specific algorithm to the data. As drops of water are passed through the water filter and modified, so too are bytes of data passed through the stream filter. Of course, there are some big differences—most notably, a stream filter can add data or some other kind of annotation to the stream, in addition to removing things you don’t want; it may even produce a stream that is completely different from its original input (for example, by compressing the original data).
The Filter Stream Classes
java.io.FilterInputStream
and
java.io.FilterOutputStream
are concrete superclasses for input and
output stream subclasses that somehow modify or manipulate data of an
underlying stream:
public class FilterInputStream ...
Get Java I/O now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.