Input and output | CodeGuru

Input and output

Bruce Eckel’s Thinking in Java Contents | Prev | Next The Java library classes for IO are divided by input and output, as you can see by looking at the online Java class hierarchy with your Web browser. By inheritance, all classes derived from InputStream have basic methods called read( ) for reading a single byte […]

Written By
CodeGuru Staff
CodeGuru Staff
Mar 1, 2001
4 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

The


Java library classes for IO are divided by

input
and
output,
as you can see by looking at the online Java class hierarchy with your Web
browser. By inheritance, all classes derived from
InputStream
have basic methods called
read( )
for
reading a single byte or array of bytes. Likewise, all classes derived from
OutputStream
have
basic methods called
write( )
for
writing a single byte or array of bytes. However, you won’t generally use
these methods; they exist so more sophisticated classes can use them as they
provide a more useful interface. Thus, you’ll rarely create your stream
object by using a single class, but instead will layer multiple objects
together to provide your desired functionality. The fact that you create more
than one object to create a single resulting stream is the primary reason that
Java’s stream library is confusing.

It’s


helpful to categorize the classes by their functionality. The library designers


started by deciding that all classes that had anything to do with input would


be inherited from


InputStream

and all classes that were associated with output would be inherited from


OutputStream

.


Types
of InputStream

InputStream

’s


job is to represent classes that produce input from different sources. These


sources can be (and each has an associated subclass of


InputStream

):

  1. An
    array of bytes
  2. A
    String
    object
  3. A
    file
  4. A
    “pipe,” which works like a physical pipe:
    you put things in one end and they come out the other
  5. A
    sequence of other streams, so you can collect them together into a single stream
  6. Other
    sources, such as an Internet connection. (This will be discussed in a later
    chapter.)

In


addition, the


FilterInputStream

is also a type of


InputStream

,


to provide a base class for

decorator

classes that attach attributes or


useful interfaces to input streams. This is discussed later.

Table
10-1. Types of InputStream
Class Function Constructor
Arguments How
to use it

ByteArray-InputStream Allows
a buffer in memory to be used as an
InputStream.
The
buffer from which to extract the bytes.
As
a source of data. Connect it to a
FilterInputStream
object to provide a useful interface.
StringBuffer-InputStream Converts
a
String
into an
InputStream.
A
String.
The underlying implementation actually uses a StringBuffer.
As
a source of data. Connect it to a
FilterInputStream
object to provide a useful interface.
File-InputStream For
reading information from a file.
A
String
representing the file name, or a File
or
FileDescriptor
object.
As
a source of data. Connect it to a
FilterInputStream
object to provide a useful interface.

Piped-InputStream Produces
the data that’s being written to the associated PipedOutput-Stream.
Implements the “piping” concept.
PipedOutputStream
As
a source of data in multithreading. Connect it to a
FilterInputStream
object to provide a useful interface.
Sequence-InputStream Coverts
two or more
InputStream
objects into a single
InputStream.
Two
InputStream
objects or an
Enumeration
for a container of
InputStream
objects.
As
a source of data. Connect it to a
FilterInputStream
object to provide a useful interface.
Filter-InputStream Abstract
class which is an interface for decorators that provide useful functionality to
the other
InputStream
classes. See Table 10-3.
See
Table 10-3.
See
Table 10-3.

Types
of OutputStream

This


category includes the classes that decide where your output will go: an array


of bytes (no


String

,


however; presumably you can create one using the array of bytes), a file, or a


“pipe.”

In


addition, the


FilterOutputStream

provides a base class for

decorator

classes that attach attributes or useful


interfaces to output streams. This is discussed later.

Table
10-2. Types of OutputStream
Class Function Constructor
Arguments How
to use it

ByteArray-OutputStream Creates
a buffer in memory. All the data that you send to the stream is placed in this
buffer.
Optional
initial size of the buffer.
To
designate the destination of your data. Connect it to a
FilterOutputStream
object to provide a useful interface.
File-OutputStream For
sending information to a file.
A
String
representing the file name, or a
File
or
FileDescriptor
object.
To
designate the destination of your data. Connect it to a
FilterOutputStream
object to provide a useful interface.
Piped-OutputStream Any
information you write to this automatically ends up as input for the associated
PipedInput-Stream.
Implements the “piping” concept.
PipedInputStream
To
designate the destination of your data for multithreading. Connect it to a
FilterOutputStream
object to provide a useful interface.
Filter-OutputStream Abstract
class which is an interface for decorators that provide useful functionality to
the other
OutputStream
classes. See Table

10-4.

See
Table 10-4.
See
Table 10-4.
Contents

|

Prev

|

Next
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.