0% found this document useful (0 votes)
35 views

Input Output

These are java notes on input output, input/output buffer readers and writers

Uploaded by

Daksh Mathur
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

Input Output

These are java notes on input output, input/output buffer readers and writers

Uploaded by

Daksh Mathur
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Handling Primitive Data Types

The basic input and output streams provide


read/ write methods that can be used for
reading/ writing bytes or characters.
To read/ write the primitive data types such as
integers and doubles, we can use filter classes
as wrappers on the existing I/ O streams to
filter data to the original stream.
The two filter classes supported for creating
data streams for primitive data types are:

Streams and Input/ Output Files


Part 3

DataInputStream
DataOutputStream

Hierarchy of Data Stream Classes

Class

Interface

FilterInputStream

DataInput

Data Input Stream Creation


Create Input File Stream:
FileInputStream fis = new FileI nputStream(InFile);


Create Input Data Stream:


DataInputStream dis = new DataInputStream( fis );

DataInputStream


The above statements wrap data input stream (dis) on


file input stream (fis) and use it as a filter.
Methods Supported:


Class

Interface

FilterOutputStream

DataOutput

readBoolean(), readByte(), readChar(), readShort(), readInt(),


readLong(), readFloat(), readDouble()

They read data stored in file in binary format.

DataOutputtStream
3

Data Output Stream Creation

Data Streams Flow via Filter

Create Output File Stream:

Write primitive data to the file using a filter.

FileOutputStream fos = new FileOutputStream(OutFile);




Create Output Data Stream:


DataOutputStream dos = new DataOutputStream( fos );


Program

The above statements wrap data output stream (dos)


on file output stream (fos) and use it as a filter.
Methods Supported:


They write data to file in binary format.




mydata

How many bytes are written to file when for statements:




fos
binary stream

mydata

Read primitive data from the file using a filter.

writeBoolean(), writeByte(), writeChar(), writeShort(),


writeI nt(), writeLong(), writeFloat(), writeDouble()


dos
filter

fis

dis

binary stream

filter

Program

Screen

writeInt(120), writeInt(10120)
5

Program Run and Output

Writing and Reading Primitive Data


import java.io.* ;
public class ReadWriteFilter {
public static void main( String args[ ] ) throws I OException {
/ / w rite primitive data in binary format to the "mydata" file
FileOutputStream fos = new FileOutputStream( "mydata") ;
DataOutputStream dos = new DataOutputStream( fos) ;
dos.w riteI nt( 120) ;
dos.w riteDouble( 375.50) ;
dos.w riteI nt( A+ 1) ;
dos.w riteBoolean( true) ;
dos.w riteChar( X) ;
dos.close( ) ;
fos.close( ) ;

C:\ 254\examples> java ReadWriteFilter




120
375.5
66
true
X


Display content of mydata file (in binary format):




/ / read primitive data in binary format from the "mydata" file


FileI nputStream fis = new FileI nputStream( "mydata") ;
DataI nputStream dis = new DataI nputStream( fis) ;
System.out.println(dis.readI nt( ) ) ;
System.out.println(dis.readDouble( ) ) ;
System.out.println(dis.readI nt( ) ) ;
System.out.println(dis.readBoolean( ) ) ;
System.out.println(dis.readChar( ) ) ;
dis.close( ) ;
fis.close( ) ;

C:\254\examples> type mydata




x@wx

What is the size of mydata file (in bytes) ?




Size of int+ double+ int+ boolean+ char




}
}

Concatenating and Buffering Streams

Sequencing and Buffering of Streams

Two or more input streams can be combined


into a single input stream. This process is
known as logical concatenation of streams and
is achieved using the SequenceInputStream
class.
A SequenceInputStream starts out with an
ordered collection of input streams and reads
from the first one until end of file is reached,
whereupon it reads from the second one, and
so on, until end of file is reached on the last of
the contained input streams.

Buffered streams sit between the program and


data source/ destination and functions like a
filter or support efficient I/ O. Buffered can be
created using BufferedInputStream and
BufferedOutputStream classes.
file1.dat
file2.dat

file1+ file2

Buffer

Streams
Sequencer

inBuffer

read()

Program

write()
Buffer

Screen

outputBuffer
9

10

Example Program

Contents of Input Files

import java.io.* ;
public class CombineStreams {
public static void main( String args[ ] ) throws I OException {
/ / declare file streams
FileI nputStream file1 = new FileI nputStream( "file1.dat") ;
FileI nputStream file2 = new FileI nputStream( "file2.dat") ;
/ / declare file3 to store combined streams
SequenceI nputStream file3 = null;
/ / concatenate file1 and file2 streams into file3
file3 = new SequenceI nputStream( file1, file2) ;
BufferedI nputStream inBuffer = new BufferedI nputStream( file3) ;
BufferedOutputStream outBuffer = new BufferedOutputStream( System.out) ;
/ / read and w rite combined streams until the end of buffers
int ch;
w hile( ( ch = inBuffer.read( ) ) != -1 )
outBuffer.w rite( ch) ;
outBuffer.flush( ) ; / / check out the output by removing this line
System.out.println( "\ nHello, This output is generated by CombineFiles.java program") ;
inBuffer.close( ) ;
outBuffer.close( ) ;
file1.close( ) ;
file2.close( ) ;
file3.close( ) ;
}
}

The file1.dat contains:




Hello,
I am C+ + , born in AT&T.


The file2.dat contains:




11

Hello,
I am Java, born in Sun Microsystems!

12

Output

Random Access Files

C:\ 254\examples> java CombineStreams




So for we have discussed sequential files that are either


used for storing data and accessed (read/ write) them in
sequence.
In most real world applications, it is necessary to
access data in non-sequential order (e.g, banking
system) and append new data or update existing data.
Java IO package supports RandomAccessFile class that
allow us to create files that can be used for reading
and/ or writing with random access.
The file can be open either in read mode (r) or readwrite mode (rw) as follows:


Hello,
I am C+ + , born in AT&T.
Hello,
I am Java, born in Sun Microsystems!
Hello, This output is generated by CombineFiles.java program


If the statement outBuffer.flush( ) is removed, the


output will be:


Hello, This output is generated by CombineFiles.java program


Hello,
I am C+ + , born in AT&T.
Hello,
I am Java, born in Sun Microsystems!


myFileHandleName = new RandomAccessFile (filename,


mode);


The file pointer can be set to any to any location


(measured in bytes) using seek() method prior to
reading or writing.


13

Random Access Example


import java.io.* ;
public class RandomAccess {
public static void main( String args[ ] ) throws I OException {
/ / w rite primitive data in binary format to the "mydata" file
RandomAccessFile myfile = new RandomAccessFile( "rand.dat", "rw ") ;
myfile.w riteI nt( 120) ;
myfile.w riteDouble( 375.50) ;
myfile.w riteI nt( A+ 1) ;
myfile.w riteBoolean( true) ;
myfile.w riteChar( X) ;
/ / set pointer to the beginning of file and read next tw o items
myfile.seek( 0) ;
System.out.println(myfile.readI nt( ) ) ;
System.out.println(myfile.readDouble( ) ) ;
/ / set pointer to the 4th item and read it
myfile.seek( 16) ;
System.out.println(myfile.readBoolean( ) ) ;
/ / Go to the end and append an integer 2003
myfile.seek( myfile.length( ) ) ;
myfile.w riteI nt( 2003) ;
/ / read 5th and 6th items
myfile.seek( 17) ;
System.out.println(myfile.readChar( ) ) ;
System.out.println(myfile.readI nt( ) ) ;
System.out.println( "File length: "+ myfile.length( ) ) ;
myfile.close( ) ;
}
}

Execution and Output


C:\ 254\ examples> java RandomAccess

0


Int

120
375.5
true
X
2003
File length: 23


4
Double


12


Int


boolean
Char

16
17


19
Int


23

15

16

Streams and Interactive I/ O

Standard I/ O

Real world applications are designed to support


interactive and/ or batch I/O operations.
Interactive programs allow users to interact
with them during their execution through I/ O
devices such as keyboard, mouse, display
devices (text/graphical interface), media
devices (microphones/ speakers), etc..

14

Java provides rich functionality for developing


interactive programs.

The System class contains three I / O


objects (static)


Batch programs are those that are designed to


read input data from files and produce outputs
through files.
17

System.in instance of InputStream


System.out instance of PrintStream
System.err instance of PrintStream

To perform keyboard input, we need use


functionalities of DataI nputStream and
StringTokenizer classes.
18

Interactive IO Example

Reading Integer from Standard Input


Create buffered reader for standard input by
wrapping System.in object:
BufferedReader dis = new BufferedReader(new
InputStreamReader(System.in));

Read a line of text from the console


String str = dis.readLine();

Create Tokenens
StringTokenizer st;
st = new StringTokenizer(str);

Convert String Token into basic integer:


int stdID = Integer.parseInt(st.nextToken());

19

import java.io.* ;
import java.util.* ;
public class StudentRecord {
public static void main( String args[ ] ) throw s I OException {
/ / Create buffered reader for standard input
BufferedReader dis = new BufferedReader( new I nputStreamReader( System.in) ) ;
StringTokenizer st;
/ / reading data from console
System.out.print( "Enter Student I D: ") ;
st = new StringTokenizer( dis.readLine( ) ) ;
int stdI D = I nteger.parseI nt( st.nextToken( ) ) ;
System.out.print( "Enter Student Name: ") ;
String stdName = dis.readLine( ) ;
System.out.print( "Enter Student Marks: ") ;
st = new StringTokenizer( dis.readLine( ) ) ;
int stdMarks = I nteger.parseI nt( st.nextToken( ) ) ;
/ / w rite to console
System.out.println( "Student details are:") ;
System.out.println( "I D: "+ stdI D) ;
System.out.println( "Name: "+ stdName) ;
System.out.println( "Marks: "+ stdMarks) ;
}
}
20

Run and Output

Summary

C:\ 254\ examples> java StudentRecord

Enter Student ID: 2002010


Enter Student Name: Mary Baker
Enter Student Marks: 85
Student details are:
ID: 2002010
Name: Mary Baker
Marks: 85


21

All Java I/O classes are designed to operate with


Exceptions.
User Exceptions and your own handler with files to
manger runtime errors.
Subclasses FileReader / FileWriter support charactersbased File I/O.
FileInputStream and FileOutputStream classes support
bytes-based File I/O.
Buffered read/ write operations support efficient I/O.
DataInputStream and DataOutputStream classes
support rich I/O functionality.
RandomAccessFile supports access to any data items in
files in any order.
22

You might also like