The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Essential Java Classes
Lesson: Reading and Writing (but no 'rithmetic)

## Working with Filtered Streams

> You attach a filtered stream to another stream to filter the data as it's read from or written to the original stream. The `java.io` package contains these filtered streams which are subclasses of either `FilterInputStream` or `FilterOutputStream`:
> - `DataInputStream` and `DataOutputStream`
> - `BufferedInputStream` and `BufferedOutputStream`
> - `LineNumberInputStream`
> - `PushbackInputStream`
> - `PrintStream` (this is an output stream)
> This section shows you how to use filtered streams through an example that uses a `DataInputStream` and a `DataOutputStream`. In addition, this section shows you how to write your own filtered streams.

### Using Filtered Streams

> [PENDING: readLine has been deprecated. UPdate this section as per book, and book in new psuedo-code here]

> To use a filtered input or output stream, attach the filtered stream to another input or output stream. For example, you can attach a `DataInputStream` to the standard input stream as in the following code:

> >     DataInputStream dis = new DataInputStream(System.in);
> >     String input;

> >     while ((input = dis.readLine()) != null) {
> >         . . . // do something interesting here
> >     }

> You might do this so that you can use the more convenient `readXXX` methods, such as `readLine`, implemented by `DataInputStream`.

### How to Use DataInputStream and DataOutputStream

> This page provides and explains an example of using `DataInputStream` and `DataOutputStream`, two filtered streams that can read and write primitive Java data types.

### Writing Your Own Filtered Streams

> Many programmers find that they need to implement their own streams that filter or process data as it is being written to or read from the stream. Sometimes the processing is independent of the format of the data, such as counting various items in the stream, and sometimes the processing is directly related to the data itself or the format of the data, such as reading and writing data that is contained in rows and columns. Often, these programmers subclass `FilterOutputStream` and `FilterInputStream` to achieve their goals. This section describes an example of how to subclass `FileInputStream` and `FilterOutputStream` to create your own filtered streams.

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form