| |
|
|
Trail: Essential Java Classes
|
Lesson: Reading and Writing (but no 'rithmetic)
|
|
Overview of I/O Streams
Character Streams
Reader and Writer are the abstract
superclasses for character streams in java.io.
Reader provides the API
and partial implementation for readers--streams that
read 16-bit characters--and Writer provides the API and
partial implementation for writers--streams that write 16-bit
characters.
Subclasses of Reader and Writer implement
specialized streams and are divided into two categories: those that
read from or write to data sinks (shown in gray in the following
figures) and those
that perform some sort of processing (shown in white).
The figure shows the class hierarchies for the Reader and
Writer classes.
 This figure has been reduced to fit on the page. Click the image to view it at its natural size.
 This figure has been reduced to fit on the page. Click the image to view it at its natural size.
Most programs should use readers and writers to read and write
information. This is because they both can handle any character in the
Unicode character set (while the byte streams are limited to
ISO-Latin-1 8-bit bytes).
Byte Streams
Programs should use the byte streams, descendants of
InputStream and OutputStream, to read and
write 8-bit bytes. InputStream and
OutputStream provide the API and some implementation for
input streams (streams that read 8-bit bytes) and output streams
(streams that write 8-bit bytes). These streams are typically used to
read and write binary data such as images and sounds.
As with Reader and Writer, subclasses of
InputStream and OutputStream provide
specialized I/O that falls into two categories: data sink streams and
processing streams. Figure 56 shows the class hierarchies for the byte
streams.
As mentioned, two of the byte stream classes,
ObjectInputStream and ObjectOutputStream,
are used for object serialization.
These classes are fully covered in
Object Serialization.
Understanding the I/O Superclasses
Reader and InputStream define similar APIs
but for different data types. For example, Reader contains
these methods for reading characters and arrays of characters:
int read()
int read(char cbuf[])
int read(char cbuf[], int offset, int length)
InputStream defines the same methods but for reading bytes
and arrays of bytes:
int read()
int read(byte cbuf[])
int read(byte cbuf[], int offset, int length)
Also, both Reader and InputStream provide
methods for marking a location in the stream, skipping input, and
resetting the current position.
Writer and OutputStream are similarly
parallel. Writer defines these methods for writing
characters and arrays of characters:
int write(int c)
int write(char cbuf[])
int write(char cbuf[], int offset, int length)
And OutputStream defines the same methods but for bytes:
int write(int c)
int write(byte cbuf[])
int write(byte cbuf[], int offset, int length)
All of the streams--readers, writers, input streams, and output
streams--are automatically opened when created. You can close any stream
explicitly by calling its close method.
Or the garbage collector can implicitly close it,
which occurs when the object is no longer referenced.
Learn how to use a selected assortment of these two types of streams
in the next two sections:
|
|
|
|
| |
Michel RIVEILL

Laboratoire I3S - Bât. ESSI
930 Route des Colles
06903 Sophia Antipolis CEDEX
email :
riveill at unice.fr
Généralité
Ressources en lignes
Les rubriques des cours :
dernière mise à jour
le 18 septembre 2003
|