SlideShare a Scribd company logo
1 of 13
UNIT IV I/O STREAMS AND COLLECTIONS FRAMEWORK
I/O basics-Streams- Byte streams, Character streams-Reading console input-Writing console output-Reading
and writing files.-Collections - overview interfaces Collection-List, Set, Sorted Set, Navigable Set-Classes
(Array List, Linked List, Hash Set, Linked Hash Set, Tree Set)-An Iterator.
4.1Java I/O
 A stream is continuous group of data or a channel through which data flows from one point
to another point.
 Java implements streams within class hierarchies defined in the java.io package.
 Byte streams provide a convenient means for handling input and output of bytes. Byte
streams are used, for example, when reading or writing binary data.
 Character streams provide a convenient means for handling input and output of characters.
They use Unicode and, therefore, can be internationalized. Also, in some cases, character
streams are more efficient than byte streams.
4.2 STREAM
Java programs perform input/output through streams. A stream is an abstraction that either
produces or consumes information as shown in Figure 3.1. A stream is linked to a physical
device by the Java I/O system. All streams behave in the same manner, even if the actual
physical devices to which they are linked differ. Thus, the same I/O classes and methods can be
applied to any type of device. This means that an input stream can abstract many different
kinds of input: from a disk file, a keyboard, or a network socket. Likewise, an output stream
may refer to the console, a disk file, or a network connection. Streams are a clean way to deal
with input/output without having every part of code understands the difference between a
keyboard and a network. Java implements streams within class hierarchies defined in the java.io
package.
Figure 3.1 Streams usage
Java 2 defines two types of streams based on data pass through streams: byte and character.
Byte streams provide a convenient means for handling input and output of bytes. Byte streams
are used, for example, when reading or writing binary data. Character streams provide a
convenient means for handling input and output of characters. They use Unicode and, therefore,
can be internationalized. Also, in some cases, character streams are more efficient than byte
streams.
4.2.1The Byte Stream Classes
 Byte streams are defined by using two class hierarchies. At the top are two abstract
classes: InputStream and OutputStream.
 To use the stream classes, we must import java.io.
 The abstract classes InputStream and OutputStream define several key methods that
the other stream classes implement.
 Two of the most important are read ( ) and write ( ), which, respectively, read and write
bytes of data. Both methods are declared as abstract inside InputStream and
OutputStream. They are overridden by derived stream classes.
Byte Stream Classes
Stream Class Meaning
BufferedInputStream Buffered input stream
BufferedOutputStream Buffered output stream
ByteArrayInputStream Input stream that reads from a byte array
ByteArrayOutputStream Output stream that writes to a byte array
DataInputStream An input stream that contains methods for reading the Java
standard
data types
DataOutputStream An output stream that contains methods for writing the Java
standard
data types
FileInputStream Input stream that reads from a file
FileOutputStream Output stream that writes to a file
FilterInputStream Implements InputStream
FilterOutputStream Implements OutputStream
InputStream Abstract class that describes stream input
OutputStream Abstract class that describes stream output
PipedInputStream Input pipe
PipedOutputStream Output pipe
PrintStream Output stream that contains print( ) and println( )
PushbackInputStream Input stream that supports one-byte “unget,” which returns
a byte to
the input stream
RandomAccessFile Supports random access file I/O
Example:
import java.io.*;
public class DataStreamExample {
public static void main(String[] args) throws IOException {
InputStream input = new FileInputStream("D:testout.txt");
DataInputStream inst = new DataInputStream(input);
int count = input.available(); //returns available bytes count
byte[] ary = new byte[count];
inst.read(ary);
for (byte bt : ary) {
char k = (char) bt;
System.out.print(k+"-");
}
}
}
Here, we are assuming that you have following data in "testout.txt" file:
JAVA
Output:
J-A-V-A
4.2.2 The Character Stream Classes
 Character streams are defined by using two class hierarchies. At the top are two abstract
classes, Reader and Writer. These abstract classes handle Unicode character streams.
Java has several concrete subclasses of each of these.
 The abstract classes Reader and Writer define several key methods that the other stream
classes implement. Two of the most important methods are read ( ) and write ( ), which
read and write characters of data, respectively. These methods are overridden by derived
stream classes.
Character Stream Class
Stream Class Meaning
BufferedReader Buffered input character stream
BufferedWriter Buffered output character stream
CharArrayReader Input stream that reads from a character array
CharArrayWriter Output stream that writes to a character array
FileReader Input stream that reads from a file
FileWriter Output stream that writes to a file
FilterReader Filtered reader
FilterWriter Filtered writer
InputStreamReader Input stream that translates bytes to characters
LineNumberReader Input stream that counts lines
OutputStreamWriter Output stream that translates characters to bytes
PipedReader Input pipe
PipedWriter Output pipe
PrintWriter Output stream that contains print( ) and println( )
PushbackReader Input stream that allows characters to be returned to the input
stream
Reader Abstract class that describes character stream input
StringReader Input stream that reads from a string
StringWriter Output stream that writes to a string
Writer Abstract class that describes character stream output
Example:
import java.io.FileReader;
public class FileReaderExample {
public static void main(String args[])throws Exception{
FileReader fr=new FileReader("D:testout.txt");
int i;
while((i=fr.read())!=-1)
System.out.print((char)i);
fr.close();
}
}
Here, we are assuming that you have following data in "testout.txt" file:
Welcome to java
Output:
Welcome to java
4.3 JAVA SYSTEM CLASS
 All Java programs automatically import the java.lang package.
 This package defines a class called System, which encapsulates several aspects of the
run-time environment.
 System contains three predefined stream variables, in, out, and errs. These fields are
declared as public and static within System. This means that they can be used by any
other part of your program and without reference to a specific System object.
 System.out refers to the standard output stream. By default, this is the console.
 System.in refers to standard input, which is the keyboard by default.
 System.err refers to the standard error stream, which also is the console by default.
 System.in is an object of type InputStream; System.out and System.err are objects of
type PrintStream. These are byte streams, even though they typically are used to read
and write characters from and to the console.
4.4 READING CONSOLE INPUT
In Java, console input is accomplished by reading from System.in. To obtain a character-based
stream that is attached to the console, you wrap System.in in a BufferedReader object, to create
a character stream. BuffereredReader supports a buffered input stream. Its most commonly
used constructor is shown here:
BufferedReader(Reader inputReader)
Here, inputReader is the stream that is linked to the instance of BufferedReader that is being
created. Reader is an abstract class. One of its concrete subclasses is InputStreamReader,
which converts bytes to characters. To obtain an InputStreamReader object that is linked to
System.in, use the following constructor:
InputStreamReader(InputStream inputStream)
Because System.in refers to an object of type InputStream, it can be used for inputStream.
Putting it all together, the following line of code creates a BufferedReader that is connected to
the keyboard:
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
After this statement executes, br is a character-based stream that is linked to the console through
System.in.
4.4.1 Reading Characters
To read a character from a BufferedReader, use read( ). The version of read( ) that we will be
using is
int read( ) throws IOException
Each time that read( ) is called, it reads a character from the input stream and returns it as an
integer value. It returns –1 when the end of the stream is encountered.
import java.io.*;
class BRRead {
public static void main(String args[]) throws IOException
{
char c;
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter characters, 'q' to quit.");
// read characters
do {
c = (char) br.read();
System.out.println(c);
} while(c != 'q');
}
}
Here is a sample run:
Enter characters, 'q' to quit.
123abcq
1
2
3
a
b
c
q
4.4.2 Reading Strings
To read a string from the keyboard, use the version of readLine( ) that is a member of the
BufferedReader class. Its general form is shown here:
String readLine( ) throws IOException
Example:
import java.io.*;
class BRReadLines {
public static void main(String args[])
throws IOException
{
// create a BufferedReader using System.in
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String str;
System.out.println("Enter lines of text.");
System.out.println("Enter 'stop' to quit.");
do {
str = br.readLine();
System.out.println(str);
} while(!str.equals("stop"));
}
}
Write a program to find addition of two numbers given from the keyboard. Using
exception handling, display appropriate message if the inputs are not valid numbers.
import java.io.*;
class Addition
{
public static void main(String args[])
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
int x, y, z;
try
{
System.out.println("Enter 1st number");
str = br.readLine();
x=Integer.parseInt(str);
System.out.println("Enter 2nd number");
str = br.readLine();
y=Integer.parseInt(str);
z=x+y;
System.out.print(“Addition Result is: ”+z);
}
catch (Exception e)
{
System.out.println("Invalid Number ..Try Again!!!!!!!");
}
}
}
Write a program to find factorial of an integer given from the keyboard. Using exception
handling mechanism, display appropriate message if the input from keyboard is not a valid
integer.
import java.io.*;
class Factorial
{
public static void main(String args[])
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
int n, f=1, i;
try
{
System.out.println("Enter the number");
str = br.readLine();
n=Integer.parseInt(str);
for(i=1; i<=n; i++)
f=f*i;
System.out.print(“Factorial is: ”+f);
}
catch (Exception e)
{
System.out.println("Invalid Input ..Try Again!!!!!!!");
}
}
}
4. 5 WRITING CONSOLE OUTPUT
Console output is most easily accomplished with print( ) and println(). These methods are
defined by the class PrintStream. PrintStream is an output stream derived from OutputStream, it
also implements low-level method write( ). Thus, write( ) can be used to write to the console as
shown here:
void write(int byteval)
This method writes to the stream the byte specified by byteval. Although byteval is declared as
an integer, only the low-order eight bits are written. Here is a short example that uses write( ) to
output the character “A” followed by a newline to the screen:
// Demonstrate System.out.write().
class WriteDemo {
public static void main(String args[]) {
int b;
b = 'A';
System.out.write(b);
System.out.write('n');
}
}
4.6 READING AND WRITING FILES
Java provides a number of classes and methods that allow reading and writing files. In Java, all
files are byte-oriented, and Java provides methods to read and write bytes from and to a file. For
the basics of file I/O, two of stream classes are FileInputStream and FileOutputStream, which
create byte streams linked to files.
To open a file, we create an object of one of these classes, specifying the name of the file as an
argument to the constructor.
FileInputStream(String fileName) throws FileNotFoundException
FileOutputStream(String fileName) throws FileNotFoundException
Here, fileName specifies the name of the file that we want to open. When we create an input
stream or output stream, if the file does not exist, then FileNotFoundException is thrown. When
an output file is opened, any preexisting file by the same name is destroyed. When you are done
with a file, you should close it by calling close( ). It is defined by both FileInputStream and
FileOutputStream, as shown here:
void close( ) throws IOException
To read from a file, use a version of read( ) that is defined within FileInputStream.
int read( ) throws IOException
Each time that it is called, it reads a single byte from the file and returns the byte as an integer
value. read( ) returns –1 when the end of the file is encountered. It can throw an IOException.
The following program uses read( ) to input and display the contents of a text file. Note the
try/catch blocks that handle one error that might occur when this program is used—the specified
file not being found. Other I/O exceptions that might occur are simply thrown out of main( ),
which is acceptable for this simple example. However, often you will want to handle all I/O
exceptions yourself when working with files.
import java.io.*;
class ShowFile {
public static void main(String args[]) throws IOException
{
int i;
FileInputStream fin;
try {
fin = new FileInputStream(“TEST.TXT”);
} catch(FileNotFoundException e) {
System.out.println("File Not Found");
return;
}
// read characters until EOF is encountered
do {
i = fin.read();
if(i != -1) System.out.print((char) i);
} while(i != -1);
fin.close();
}
}
To write to a file, you can use the write( ) method defined by FileOutputStream. Its simplest
form is shown here:
void write(int byteval) throws IOException
This method writes the byte specified by byteval to the file. Although byteval is declared
as an integer, only the low-order eight bits are written to the file. If an error occurs during
writing, an IOException is thrown.
The next example uses write( ) to copy a text file:
import java.io.*;
class CopyFile {
public static void main(String args[]) throws IOException
{
int i;
FileInputStream fin;
FileOutputStream fout;
// open input file
try {
fin = new FileInputStream(“Input.txt”);
} catch(FileNotFoundException e) {
System.out.println("Input File Not Found");
return;
}
// open output file
try {
fout = new FileOutputStream(“Output.txt”);
} catch(FileNotFoundException e) {
System.out.println("Error Opening Output File");
return;
}
// Copy File
try {
do {
i = fin.read();
if(i != -1) fout.write(i);
} while(i != -1);
} catch(IOException e) {
System.out.println("File Error");
}
fin.close();
fout.close();
}
}
4. 7 SERIALIZATION
Java provides a mechanism, called object serialization where an object can be represented as a
sequence of bytes that includes the object's data as well as information about the object's type
and the types of data stored in the object.
After a serialized object has been written into a file, it can be read from the file and deserialized
that is, the type information and bytes that represent the object and its data can be used to
recreate the object in memory.
Most impressive is that the entire process is JVM independent, meaning an object can be
serialized on one platform and deserialized on an entirely different platform.
Classes ObjectInputStream and ObjectOutputStream are high-level streams that contain the
methods for deserializing and serializing an object. The ObjectOutputStream class contains many
write methods for writing various data types, but one method in particular stands out:
public final void writeObject(Object x) throws IOException
The above method serializes an Object and sends it to the output stream. Similarly, the
ObjectInputStream class contains the following method for deserializing an object:
public final Object readObject() throws IOException, ClassNotFoundException
This method retrieves the next Object out of the stream and deserializes it. The return value is
Object, so you will need to cast it to its appropriate data type.
4.7.1 Serializing an Object
The ObjectOutputStream class is used to serialize an Object. The following SerializeDemo
program instantiates an Employee object and serializes it to a file. When the program is done
executing, a file named employee.ser is created. The program does not generate any output, but
study the code and try to determine what the program is doing.
Note: When serializing an object to a file, the standard convention in Java is to give the file a
.ser extension.
import java.io.*;
class Employee implements java.io.Serializable
{
public String name;
public String address;
public transient int age;
public int number;
public void mailCheck()
{
System.out.println("Mailing a check to " + name + " " + address);
}
}
public class SerializeDemo
{
public static void main(String [] args)
{
Employee e = new Employee();
e.name = "Sourav Kumar Giri";
e.address = "Baleswar, Odisha.";
e.age =25;
e.number = 101;
try
{
FileOutputStream fileOut =new FileOutputStream("employee.ser");
ObjectOutputStream out =new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();
}
catch(IOException i)
{
i.printStackTrace();
}
}
}
4.7.2 Deserializing an Object
The following DeserializeDemo program deserializes the Employee object created in the
SerializeDemo program. Study the program and try to determine its output:
import java.io.*;
public class DeserializeDemo
{
public static void main(String [] args)
{
Employee e = null;
try
{
FileInputStream fileIn =new FileInputStream("employee.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (Employee) in.readObject();
in.close();
fileIn.close();
}
catch(IOException i)
{
i.printStackTrace();
return;
}
catch(ClassNotFoundException c)
{
System.out.println("Employee class not found");
c.printStackTrace();
return;
}
System.out.println("Deserialized Employee...");
System.out.println("Name: " + e.name);
System.out.println("Address: " + e.address);
System.out.println("Age " + e.age);
System.out.println("Number: " + e.number);
}
}
Output: Deserialized Employee...
Name: Sourav Kumar Giri
Address: Baleswar, Odisha
Age:0
Number:101
Here are following important points to be noted:
 The try/catch block tries to catch a ClassNotFoundException, which is declared by the
readObject() method. For a JVM to be able to deserialize an object, it must be able to find
the bytecode for the class. If the JVM can't find a class during the deserialization of an
object, it throws a ClassNotFoundException.
 Notice that the return value of readObject() is cast to an Employee reference.
 The value of the age field was 25 when the object was serialized, but because the field is
transient, this value was not sent to the output stream. The age field of the deserialized
Employee object is 0.

More Related Content

Similar to Unit IV Notes.docx

Similar to Unit IV Notes.docx (20)

IO and serialization
IO and serializationIO and serialization
IO and serialization
 
Itp 120 Chapt 19 2009 Binary Input & Output
Itp 120 Chapt 19 2009 Binary Input & OutputItp 120 Chapt 19 2009 Binary Input & Output
Itp 120 Chapt 19 2009 Binary Input & Output
 
Stream In Java.pptx
Stream In Java.pptxStream In Java.pptx
Stream In Java.pptx
 
Java stream
Java streamJava stream
Java stream
 
Chapter 6
Chapter 6Chapter 6
Chapter 6
 
Java - File Input Output Concepts
Java - File Input Output ConceptsJava - File Input Output Concepts
Java - File Input Output Concepts
 
Java Day-6
Java Day-6Java Day-6
Java Day-6
 
L21 io streams
L21 io streamsL21 io streams
L21 io streams
 
What is java input and output stream?
What is java input and output stream?What is java input and output stream?
What is java input and output stream?
 
What is java input and output stream?
What is java input and output stream?What is java input and output stream?
What is java input and output stream?
 
Java Tutorial Lab 6
Java Tutorial Lab 6Java Tutorial Lab 6
Java Tutorial Lab 6
 
Io streams
Io streamsIo streams
Io streams
 
Using Input Output
Using Input OutputUsing Input Output
Using Input Output
 
Stream Based Input Output
Stream Based Input OutputStream Based Input Output
Stream Based Input Output
 
Java I/o streams
Java I/o streamsJava I/o streams
Java I/o streams
 
Java programming Chapter 4.pptx
Java programming Chapter 4.pptxJava programming Chapter 4.pptx
Java programming Chapter 4.pptx
 
CORE JAVA-1
CORE JAVA-1CORE JAVA-1
CORE JAVA-1
 
Understanding java streams
Understanding java streamsUnderstanding java streams
Understanding java streams
 
Stream
StreamStream
Stream
 
Lecture 23
Lecture 23Lecture 23
Lecture 23
 

More from GayathriRHICETCSESTA (20)

nncollovcapaldo2013-131220052427-phpapp01.pdf
nncollovcapaldo2013-131220052427-phpapp01.pdfnncollovcapaldo2013-131220052427-phpapp01.pdf
nncollovcapaldo2013-131220052427-phpapp01.pdf
 
Smart material - Unit 3 (1).pdf
Smart material - Unit 3 (1).pdfSmart material - Unit 3 (1).pdf
Smart material - Unit 3 (1).pdf
 
Unit 2 notes.pdf
Unit 2 notes.pdfUnit 2 notes.pdf
Unit 2 notes.pdf
 
CS8601-IQ.pdf
CS8601-IQ.pdfCS8601-IQ.pdf
CS8601-IQ.pdf
 
CS8601-QB.pdf
CS8601-QB.pdfCS8601-QB.pdf
CS8601-QB.pdf
 
Smart material - Unit 2 (1).pdf
Smart material - Unit 2 (1).pdfSmart material - Unit 2 (1).pdf
Smart material - Unit 2 (1).pdf
 
Smart material - Unit 3 (2).pdf
Smart material - Unit 3 (2).pdfSmart material - Unit 3 (2).pdf
Smart material - Unit 3 (2).pdf
 
Annexure 2 .pdf
Annexure 2  .pdfAnnexure 2  .pdf
Annexure 2 .pdf
 
cs621-lect18-feedforward-network-contd-2009-9-24.ppt
cs621-lect18-feedforward-network-contd-2009-9-24.pptcs621-lect18-feedforward-network-contd-2009-9-24.ppt
cs621-lect18-feedforward-network-contd-2009-9-24.ppt
 
ann-ics320Part4.ppt
ann-ics320Part4.pptann-ics320Part4.ppt
ann-ics320Part4.ppt
 
Smart material - Unit 2 (1).pdf
Smart material - Unit 2 (1).pdfSmart material - Unit 2 (1).pdf
Smart material - Unit 2 (1).pdf
 
nncollovcapaldo2013-131220052427-phpapp01.pdf
nncollovcapaldo2013-131220052427-phpapp01.pdfnncollovcapaldo2013-131220052427-phpapp01.pdf
nncollovcapaldo2013-131220052427-phpapp01.pdf
 
alumni form.pdf
alumni form.pdfalumni form.pdf
alumni form.pdf
 
Semester VI.pdf
Semester VI.pdfSemester VI.pdf
Semester VI.pdf
 
cs621-lect18-feedforward-network-contd-2009-9-24.ppt
cs621-lect18-feedforward-network-contd-2009-9-24.pptcs621-lect18-feedforward-network-contd-2009-9-24.ppt
cs621-lect18-feedforward-network-contd-2009-9-24.ppt
 
ann-ics320Part4.ppt
ann-ics320Part4.pptann-ics320Part4.ppt
ann-ics320Part4.ppt
 
Semester V-converted.pdf
Semester V-converted.pdfSemester V-converted.pdf
Semester V-converted.pdf
 
Elective II.pdf
Elective II.pdfElective II.pdf
Elective II.pdf
 
unit 1 and 2 qb.docx
unit 1 and 2 qb.docxunit 1 and 2 qb.docx
unit 1 and 2 qb.docx
 
CS8601-IQ.pdf
CS8601-IQ.pdfCS8601-IQ.pdf
CS8601-IQ.pdf
 

Recently uploaded

Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...Call Girls in Nagpur High Profile
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...RajaP95
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAbhinavSharma374939
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 

Recently uploaded (20)

Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
High Profile Call Girls Nashik Megha 7001305949 Independent Escort Service Na...
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog Converter
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 

Unit IV Notes.docx

  • 1. UNIT IV I/O STREAMS AND COLLECTIONS FRAMEWORK I/O basics-Streams- Byte streams, Character streams-Reading console input-Writing console output-Reading and writing files.-Collections - overview interfaces Collection-List, Set, Sorted Set, Navigable Set-Classes (Array List, Linked List, Hash Set, Linked Hash Set, Tree Set)-An Iterator. 4.1Java I/O  A stream is continuous group of data or a channel through which data flows from one point to another point.  Java implements streams within class hierarchies defined in the java.io package.  Byte streams provide a convenient means for handling input and output of bytes. Byte streams are used, for example, when reading or writing binary data.  Character streams provide a convenient means for handling input and output of characters. They use Unicode and, therefore, can be internationalized. Also, in some cases, character streams are more efficient than byte streams. 4.2 STREAM Java programs perform input/output through streams. A stream is an abstraction that either produces or consumes information as shown in Figure 3.1. A stream is linked to a physical device by the Java I/O system. All streams behave in the same manner, even if the actual physical devices to which they are linked differ. Thus, the same I/O classes and methods can be applied to any type of device. This means that an input stream can abstract many different kinds of input: from a disk file, a keyboard, or a network socket. Likewise, an output stream may refer to the console, a disk file, or a network connection. Streams are a clean way to deal with input/output without having every part of code understands the difference between a keyboard and a network. Java implements streams within class hierarchies defined in the java.io package. Figure 3.1 Streams usage Java 2 defines two types of streams based on data pass through streams: byte and character. Byte streams provide a convenient means for handling input and output of bytes. Byte streams are used, for example, when reading or writing binary data. Character streams provide a convenient means for handling input and output of characters. They use Unicode and, therefore, can be internationalized. Also, in some cases, character streams are more efficient than byte streams.
  • 2. 4.2.1The Byte Stream Classes  Byte streams are defined by using two class hierarchies. At the top are two abstract classes: InputStream and OutputStream.  To use the stream classes, we must import java.io.  The abstract classes InputStream and OutputStream define several key methods that the other stream classes implement.  Two of the most important are read ( ) and write ( ), which, respectively, read and write bytes of data. Both methods are declared as abstract inside InputStream and OutputStream. They are overridden by derived stream classes. Byte Stream Classes Stream Class Meaning BufferedInputStream Buffered input stream BufferedOutputStream Buffered output stream ByteArrayInputStream Input stream that reads from a byte array ByteArrayOutputStream Output stream that writes to a byte array DataInputStream An input stream that contains methods for reading the Java standard data types DataOutputStream An output stream that contains methods for writing the Java standard data types FileInputStream Input stream that reads from a file FileOutputStream Output stream that writes to a file FilterInputStream Implements InputStream FilterOutputStream Implements OutputStream InputStream Abstract class that describes stream input OutputStream Abstract class that describes stream output PipedInputStream Input pipe PipedOutputStream Output pipe PrintStream Output stream that contains print( ) and println( ) PushbackInputStream Input stream that supports one-byte “unget,” which returns
  • 3. a byte to the input stream RandomAccessFile Supports random access file I/O Example: import java.io.*; public class DataStreamExample { public static void main(String[] args) throws IOException { InputStream input = new FileInputStream("D:testout.txt"); DataInputStream inst = new DataInputStream(input); int count = input.available(); //returns available bytes count byte[] ary = new byte[count]; inst.read(ary); for (byte bt : ary) { char k = (char) bt; System.out.print(k+"-"); } } } Here, we are assuming that you have following data in "testout.txt" file: JAVA Output: J-A-V-A 4.2.2 The Character Stream Classes  Character streams are defined by using two class hierarchies. At the top are two abstract classes, Reader and Writer. These abstract classes handle Unicode character streams. Java has several concrete subclasses of each of these.  The abstract classes Reader and Writer define several key methods that the other stream classes implement. Two of the most important methods are read ( ) and write ( ), which read and write characters of data, respectively. These methods are overridden by derived stream classes. Character Stream Class Stream Class Meaning BufferedReader Buffered input character stream BufferedWriter Buffered output character stream
  • 4. CharArrayReader Input stream that reads from a character array CharArrayWriter Output stream that writes to a character array FileReader Input stream that reads from a file FileWriter Output stream that writes to a file FilterReader Filtered reader FilterWriter Filtered writer InputStreamReader Input stream that translates bytes to characters LineNumberReader Input stream that counts lines OutputStreamWriter Output stream that translates characters to bytes PipedReader Input pipe PipedWriter Output pipe PrintWriter Output stream that contains print( ) and println( ) PushbackReader Input stream that allows characters to be returned to the input stream Reader Abstract class that describes character stream input StringReader Input stream that reads from a string StringWriter Output stream that writes to a string Writer Abstract class that describes character stream output Example: import java.io.FileReader; public class FileReaderExample { public static void main(String args[])throws Exception{ FileReader fr=new FileReader("D:testout.txt"); int i; while((i=fr.read())!=-1) System.out.print((char)i); fr.close(); } } Here, we are assuming that you have following data in "testout.txt" file: Welcome to java Output: Welcome to java
  • 5. 4.3 JAVA SYSTEM CLASS  All Java programs automatically import the java.lang package.  This package defines a class called System, which encapsulates several aspects of the run-time environment.  System contains three predefined stream variables, in, out, and errs. These fields are declared as public and static within System. This means that they can be used by any other part of your program and without reference to a specific System object.  System.out refers to the standard output stream. By default, this is the console.  System.in refers to standard input, which is the keyboard by default.  System.err refers to the standard error stream, which also is the console by default.  System.in is an object of type InputStream; System.out and System.err are objects of type PrintStream. These are byte streams, even though they typically are used to read and write characters from and to the console. 4.4 READING CONSOLE INPUT In Java, console input is accomplished by reading from System.in. To obtain a character-based stream that is attached to the console, you wrap System.in in a BufferedReader object, to create a character stream. BuffereredReader supports a buffered input stream. Its most commonly used constructor is shown here: BufferedReader(Reader inputReader) Here, inputReader is the stream that is linked to the instance of BufferedReader that is being created. Reader is an abstract class. One of its concrete subclasses is InputStreamReader, which converts bytes to characters. To obtain an InputStreamReader object that is linked to System.in, use the following constructor: InputStreamReader(InputStream inputStream) Because System.in refers to an object of type InputStream, it can be used for inputStream. Putting it all together, the following line of code creates a BufferedReader that is connected to the keyboard: BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); After this statement executes, br is a character-based stream that is linked to the console through System.in. 4.4.1 Reading Characters To read a character from a BufferedReader, use read( ). The version of read( ) that we will be using is int read( ) throws IOException Each time that read( ) is called, it reads a character from the input stream and returns it as an integer value. It returns –1 when the end of the stream is encountered. import java.io.*; class BRRead { public static void main(String args[]) throws IOException
  • 6. { char c; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter characters, 'q' to quit."); // read characters do { c = (char) br.read(); System.out.println(c); } while(c != 'q'); } } Here is a sample run: Enter characters, 'q' to quit. 123abcq 1 2 3 a b c q 4.4.2 Reading Strings To read a string from the keyboard, use the version of readLine( ) that is a member of the BufferedReader class. Its general form is shown here: String readLine( ) throws IOException Example: import java.io.*; class BRReadLines { public static void main(String args[]) throws IOException { // create a BufferedReader using System.in BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; System.out.println("Enter lines of text."); System.out.println("Enter 'stop' to quit."); do { str = br.readLine(); System.out.println(str); } while(!str.equals("stop")); }
  • 7. } Write a program to find addition of two numbers given from the keyboard. Using exception handling, display appropriate message if the inputs are not valid numbers. import java.io.*; class Addition { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; int x, y, z; try { System.out.println("Enter 1st number"); str = br.readLine(); x=Integer.parseInt(str); System.out.println("Enter 2nd number"); str = br.readLine(); y=Integer.parseInt(str); z=x+y; System.out.print(“Addition Result is: ”+z); } catch (Exception e) { System.out.println("Invalid Number ..Try Again!!!!!!!"); } } } Write a program to find factorial of an integer given from the keyboard. Using exception handling mechanism, display appropriate message if the input from keyboard is not a valid integer. import java.io.*; class Factorial { public static void main(String args[]) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; int n, f=1, i; try { System.out.println("Enter the number");
  • 8. str = br.readLine(); n=Integer.parseInt(str); for(i=1; i<=n; i++) f=f*i; System.out.print(“Factorial is: ”+f); } catch (Exception e) { System.out.println("Invalid Input ..Try Again!!!!!!!"); } } } 4. 5 WRITING CONSOLE OUTPUT Console output is most easily accomplished with print( ) and println(). These methods are defined by the class PrintStream. PrintStream is an output stream derived from OutputStream, it also implements low-level method write( ). Thus, write( ) can be used to write to the console as shown here: void write(int byteval) This method writes to the stream the byte specified by byteval. Although byteval is declared as an integer, only the low-order eight bits are written. Here is a short example that uses write( ) to output the character “A” followed by a newline to the screen: // Demonstrate System.out.write(). class WriteDemo { public static void main(String args[]) { int b; b = 'A'; System.out.write(b); System.out.write('n'); } } 4.6 READING AND WRITING FILES Java provides a number of classes and methods that allow reading and writing files. In Java, all files are byte-oriented, and Java provides methods to read and write bytes from and to a file. For the basics of file I/O, two of stream classes are FileInputStream and FileOutputStream, which create byte streams linked to files. To open a file, we create an object of one of these classes, specifying the name of the file as an argument to the constructor. FileInputStream(String fileName) throws FileNotFoundException FileOutputStream(String fileName) throws FileNotFoundException
  • 9. Here, fileName specifies the name of the file that we want to open. When we create an input stream or output stream, if the file does not exist, then FileNotFoundException is thrown. When an output file is opened, any preexisting file by the same name is destroyed. When you are done with a file, you should close it by calling close( ). It is defined by both FileInputStream and FileOutputStream, as shown here: void close( ) throws IOException To read from a file, use a version of read( ) that is defined within FileInputStream. int read( ) throws IOException Each time that it is called, it reads a single byte from the file and returns the byte as an integer value. read( ) returns –1 when the end of the file is encountered. It can throw an IOException. The following program uses read( ) to input and display the contents of a text file. Note the try/catch blocks that handle one error that might occur when this program is used—the specified file not being found. Other I/O exceptions that might occur are simply thrown out of main( ), which is acceptable for this simple example. However, often you will want to handle all I/O exceptions yourself when working with files. import java.io.*; class ShowFile { public static void main(String args[]) throws IOException { int i; FileInputStream fin; try { fin = new FileInputStream(“TEST.TXT”); } catch(FileNotFoundException e) { System.out.println("File Not Found"); return; } // read characters until EOF is encountered do { i = fin.read(); if(i != -1) System.out.print((char) i); } while(i != -1); fin.close(); } } To write to a file, you can use the write( ) method defined by FileOutputStream. Its simplest form is shown here: void write(int byteval) throws IOException This method writes the byte specified by byteval to the file. Although byteval is declared as an integer, only the low-order eight bits are written to the file. If an error occurs during writing, an IOException is thrown.
  • 10. The next example uses write( ) to copy a text file: import java.io.*; class CopyFile { public static void main(String args[]) throws IOException { int i; FileInputStream fin; FileOutputStream fout; // open input file try { fin = new FileInputStream(“Input.txt”); } catch(FileNotFoundException e) { System.out.println("Input File Not Found"); return; } // open output file try { fout = new FileOutputStream(“Output.txt”); } catch(FileNotFoundException e) { System.out.println("Error Opening Output File"); return; } // Copy File try { do { i = fin.read(); if(i != -1) fout.write(i); } while(i != -1); } catch(IOException e) { System.out.println("File Error"); } fin.close(); fout.close(); } } 4. 7 SERIALIZATION Java provides a mechanism, called object serialization where an object can be represented as a sequence of bytes that includes the object's data as well as information about the object's type and the types of data stored in the object. After a serialized object has been written into a file, it can be read from the file and deserialized that is, the type information and bytes that represent the object and its data can be used to recreate the object in memory. Most impressive is that the entire process is JVM independent, meaning an object can be serialized on one platform and deserialized on an entirely different platform.
  • 11. Classes ObjectInputStream and ObjectOutputStream are high-level streams that contain the methods for deserializing and serializing an object. The ObjectOutputStream class contains many write methods for writing various data types, but one method in particular stands out: public final void writeObject(Object x) throws IOException The above method serializes an Object and sends it to the output stream. Similarly, the ObjectInputStream class contains the following method for deserializing an object: public final Object readObject() throws IOException, ClassNotFoundException This method retrieves the next Object out of the stream and deserializes it. The return value is Object, so you will need to cast it to its appropriate data type. 4.7.1 Serializing an Object The ObjectOutputStream class is used to serialize an Object. The following SerializeDemo program instantiates an Employee object and serializes it to a file. When the program is done executing, a file named employee.ser is created. The program does not generate any output, but study the code and try to determine what the program is doing. Note: When serializing an object to a file, the standard convention in Java is to give the file a .ser extension. import java.io.*; class Employee implements java.io.Serializable { public String name; public String address; public transient int age; public int number; public void mailCheck() { System.out.println("Mailing a check to " + name + " " + address); } } public class SerializeDemo { public static void main(String [] args) { Employee e = new Employee(); e.name = "Sourav Kumar Giri"; e.address = "Baleswar, Odisha."; e.age =25; e.number = 101; try { FileOutputStream fileOut =new FileOutputStream("employee.ser"); ObjectOutputStream out =new ObjectOutputStream(fileOut);
  • 12. out.writeObject(e); out.close(); fileOut.close(); } catch(IOException i) { i.printStackTrace(); } } } 4.7.2 Deserializing an Object The following DeserializeDemo program deserializes the Employee object created in the SerializeDemo program. Study the program and try to determine its output: import java.io.*; public class DeserializeDemo { public static void main(String [] args) { Employee e = null; try { FileInputStream fileIn =new FileInputStream("employee.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); e = (Employee) in.readObject(); in.close(); fileIn.close(); } catch(IOException i) { i.printStackTrace(); return; } catch(ClassNotFoundException c) { System.out.println("Employee class not found"); c.printStackTrace(); return; } System.out.println("Deserialized Employee..."); System.out.println("Name: " + e.name); System.out.println("Address: " + e.address); System.out.println("Age " + e.age); System.out.println("Number: " + e.number);
  • 13. } } Output: Deserialized Employee... Name: Sourav Kumar Giri Address: Baleswar, Odisha Age:0 Number:101 Here are following important points to be noted:  The try/catch block tries to catch a ClassNotFoundException, which is declared by the readObject() method. For a JVM to be able to deserialize an object, it must be able to find the bytecode for the class. If the JVM can't find a class during the deserialization of an object, it throws a ClassNotFoundException.  Notice that the return value of readObject() is cast to an Employee reference.  The value of the age field was 25 when the object was serialized, but because the field is transient, this value was not sent to the output stream. The age field of the deserialized Employee object is 0.