Contents
• Overview ofI/O Streams
• Character Streams
• Byte Streams
• Using the Streams
• Object Serialization
• Working with Random Access files
• Standard IO Streams
4.
Overview of I/OStreams
To bring in information, a program opens a
stream on an information source (a file,
memory, a socket) and reads the information
sequentially, as shown in the following figure.
5.
Similarly, a programcan send information
to an external destination by opening a
stream to a destination and writing the
information out sequentially, as shown in
the following figure.
Overview of I/O STREAMS
Contd.
6.
Overview of I/Ostreams
Contd..
• The java.io package contains a collection of
stream classes that support algorithms for
reading and writing. To use these classes, a
program needs to import the java.io
package.
• The stream classes are divided into two class
hierarchies, based on the data type (either
characters or bytes) on which they operate i.e
Character Stream and Byte Stream
7.
Character Streams
• Readerand 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).
8.
Character Streams Contd.
•The following figure shows the class
hierarchies for the Reader and Writer
classes.
9.
Byte Streams
• Toread and write 8-bit bytes, programs
should use the byte streams, descendents
of InputStream and OutputStream .
• InputStream and OutputStream provide
the API and partial implementation for
input streams (streams that read 8-bit
bytes) and output streams (streams that
write 8-bit bytes).
10.
Byte Streams (cont.)
•These streams are typically used to read
and write binary data such as images and
sounds.
• Two of the byte stream classes,
ObjectInputStream and
ObjectOutputStream, are used for object
serialization.
How to UseFile Streams
The file streams-- FileReader , FileWriter ,
FileInputStream , and FileOutputStream -- read or write
from a file on the native file system.
Here is simple code to create a file reader
File inputFile = new File("farrago.txt");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
This reads characters from the reader as long as there's
more input in the input file and writes those characters
to the writer.
14.
How to UsePipe Streams
• Pipes are used to channel the output from
one thread into the input of another.
PipedReader and PipedWriter (and their
input and output stream counterparts
PipedInputStream and
PipedOutputStream ) implement the input
and output components of a pipe.
15.
How to wrapa stream
Streams are wrapped to combine the various
features of the many streams.
example code:
BufferedReader in = new
BufferedReader(source);
The code opens a BufferedReader on source,
which is another reader of a different type. This
essentially "wraps" source in a BufferedReader.
The program reads from the BufferedReader,
which in turn reads from source.
16.
How to ConcatenateFiles
• The SequenceInputStream creates a single input
stream from multiple input sources.
example code :
ListOfFiles mylist = new ListOfFiles(args);
SequenceInputStream s = new
SequenceInputStream(mylist);
Here, the mylist object is an enumeration that
SequenceInputStream uses to get a new
InputStream whenever it needs one.
17.
Working with FilterStreams
• The java.io package provides a set of abstract
classes that define and partially implement filter
streams. A filter stream filters data as it's being
read from or written to the stream.
• The filter streams are FilterInputStream , and
FilterOutputStream .
• A filter stream is constructed on another stream
(the underlying stream).
18.
Object Serialization
• Twostream classes in java.io,
ObjectInputStream and
ObjectOutputStream, are used to read and
write objects.
• The key to writing an object is to represent
its state in a serialized form sufficient to
reconstruct the object as it is read. This
process is called object serialization.
19.
Uses of ObjectSerialization
• Remote Method Invocation (RMI)--
communication between objects via
sockets
• Lightweight persistence--the archival of an
object for use in a later invocation of the
same program.
20.
Working with RandomAccess
Files
• A random access file permits non-sequential or
random access to a file's contents.
• Using Random Access Files
Unlike the input and output stream classes in
java.io, RandomAccessFile is used for both reading
and writing files. You create a RandomAccessFile
object with different arguments depending on
whether you intend to read or write.
21.
Standard IO Streams
•There are three standard streams, all of which are
managed by the java.lang.System class
• Standard input--referenced by System.in
– Used for program input, typically reads input entered by
the user.
• Standard output--referenced by System.out
– Used for program output, typically displays information
to the user.
• Standard error--referenced by System.err
– Used to display error messages to the user.