Standard input, output and error
Lecture Under Construction
Contents • Overview of I/O Streams • Character Streams • Byte Streams • Using the Streams • Object Serialization • Working with Random Access files • Standard IO Streams
Overview of I/O Streams 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.
Similarly, a program can 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.
Overview of I/O streams 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
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).
Character Streams Contd. • The following figure shows the class hierarchies for the Reader and Writer classes.
Byte Streams • To read 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).
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.
Byte Streams (cont.) • The class hierarchy for the Reader Class
Byte Stream (cont.) • Class hierarchy figure for Writer Class
How to Use File 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.
How to Use Pipe 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.
How to wrap a 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.
How to Concatenate Files • 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.
Working with Filter Streams • 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).
Object Serialization • Two stream 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.
Uses of Object Serialization • 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.
Working with Random Access 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.
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.
References • http://java.sun.com/docs/books/tutorial/ essential/TOC.html#io • http://www.codeguru.com/java/tij/ tij0114.shtml

Input Output Streams.ppt standard input output

  • 1.
  • 2.
  • 3.
    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.
  • 11.
    Byte Streams (cont.) •The class hierarchy for the Reader Class
  • 12.
    Byte Stream (cont.) •Class hierarchy figure for Writer Class
  • 13.
    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.
  • 22.