Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 53

Basic IO Streams

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
The java.io package contains nearly every class you might ever need to perform
input and output (I/O) in Java. All these streams represent an input source and
an output destination. The stream in the java.io package supports many data
such as primitives, object, localized characters, etc.
Stream

A stream can be defined as a sequence of data. There are two kinds of Streams −
1. InPutStream − The InputStream is used to read data from a source.
2. OutPutStream − The OutputStream is used for writing data to a
destination.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Byte Streams :

Java byte streams are used to perform input and output of 8-bit
bytes. Though there are many classes related to byte streams but the
most frequently used classes
are, FileInputStream and FileOutputStream. Following is an
example which makes use of these two classes to copy an input file
into an output file

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Example:
import java.io.*; while ((c = in.read()) != -1) {
public class CopyFile { out.write(c);
public static void main(String args[]) }}
throws IOException {
finally {
FileInputStream in = null;
FileOutputStream out = null; if (in != null) {
try { in.close();
in = new FileInputStream("input.txt"); }
out = new if (out != null) {
FileOutputStream("output.txt"); out.close();
int c; }}}}

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Now let's have a file input.txt with the following content −
This is test for copy file.

As a next step, compile the above program and execute it, which will
result in creating output.txt file with the same content as we have in
input.txt. So let's put the above code in CopyFile.java file and do the
following −
$javac CopyFile.java
$java CopyFile

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Character Streams :

Java Byte streams are used to perform input and output of 8-bit bytes,


whereas Java Character streams are used to perform input and output for
16-bit unicode. Though there are many classes related to character streams
but the most frequently used classes are, FileReader and FileWriter.
Though internally FileReader uses FileInputStream and FileWriter uses
FileOutputStream but here the major difference is that FileReader reads
two bytes at a time and FileWriter writes two bytes at a time.
We can re-write the above example, which makes the use of these two
classes to copy an input file (having unicode characters) into an output file .

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Example :
import java.io.*; int c;
public class CopyFile { while ((c = in.read()) != -1) { out.write(c);
public static void main(String args[]) }}
throws IOException { finally {
FileReader in = null; if (in != null) {
FileWriter out = null; in.close();
}
try {
if (out != null) {
in = new FileReader("input.txt");
out.close();
out = new FileWriter("output.txt");
}}}}

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Now let's have a file input.txt with the following content -
This is test for copy file.

As a next step, compile the above program and execute it, which will
result in creating output.txt file with the same content as we have in
input.txt. So let's put the above code in CopyFile.java file and do the
following −

$javac CopyFile.java
$java CopyFile

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Standard Streams :

All the programming languages provide support for standard I/O


where the user's program can take input from a keyboard and then
produce an output on the computer screen. If you are aware of C or
C++ programming languages, then you must be aware of three
standard devices STDIN, STDOUT and STDERR. Similarly, Java
provides the following three standard streams −
Standard Input − This is used to feed the data to user's program
and usually a keyboard is used as standard input stream and
represented as System.in.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Standard Output − This is used to output the data produced by
the user's program and usually a computer screen is used for
standard output stream and represented as System.out.
Standard Error − This is used to output the error data produced
by the user's program and usually a computer screen is used for
standard error stream and represented as System.err.
Following is a simple program, which
creates InputStreamReader to read standard input stream until
the user types a "q" −

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Example :
import java.io.*; do {
public class ReadConsole { c = (char) cin.read();
public static void main(String args[]) System.out.print(c);
throws IOException }
{ InputStreamReader cin = null; while(c != 'q');
try { }
cin = new finally {
InputStreamReader(System.in);
System.out.println("Enter characters, if (cin != null) {
'q' to quit."); cin.close();
char c; }}}}

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Let's keep the above code in ReadConsole.java file and try to compile and
execute it as shown in the following program. This program continues to read
and output the same character until we press 'q' −

$javac ReadConsole.java
$java ReadConsole
Enter characters, 'q' to quit.
1
1
e
e
q
q

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Reading and Writing Files:

As described earlier, a stream can be defined as a sequence of data.


The InputStream is used to read data from a source and
the OutputStream is used for writing data to a destination.
Here is a hierarchy of classes to deal with Input and Output streams.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
-

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
The two important streams
are FileInputStream and FileOutputStream, which would be
discussed in this tutorial.

FileInputStream :
This stream is used for reading data from the files.
Objects can be created using the keyword new and there are several
types of constructors available.

Following constructor takes a file name as a string to create an input


stream object to read the file −

InputStream f = new FileInputStream("C:/java/hello");

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Following constructor takes a file object to create an input stream
object to read the file. First we create a file object using File()
method as follows −

File f = new File("C:/java/hello");


InputStream f = new FileInputStream(f);

Once you have InputStream object in hand, then there is a list of


helper methods which can be used to read to stream or to do other
operations on the stream.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Sr.No. Method & Description

public void close() throws IOException{} : This method closes the file output stream. Releases
any system resources associated with the file.
Throws an IOException.
protected void finalize()throws This method cleans up the connection to the file.
IOException {} : Ensures that the close method of this file output
stream is called when there are no more references
to this stream. Throws an IOException.

public int read(int r)throws IOException{} : This method reads the specified byte of data from
the InputStream. Returns an int. Returns the next
byte of data and -1 will be returned if it's the end of
the file.

public int read(byte[] r) throws This method reads r.length bytes from the input
IOException{} : stream into an array. Returns the total number of
bytes read. If it is the end of the file, -1 will be
returned.
public int available() throws Gives the number of bytes that can be read from this
IOException{} : TRAINING RESOURCES INDIA PVT. LTD. file input stream. Returns an
SMART int.
© 2018 SMART Training Resources Pvt. Ltd.
There are other important input streams available, for more detail you can refer
to the following links −
ByteArrayInputStream
DataInputStream

FileOutputStream :
FileOutputStream is used to create a file and write data into it. The
stream would create a file, if it doesn't already exist, before opening it for output.

Here are two constructors which can be used to create a FileOutputStream


object.

Following constructor takes a file name as a string to create an input stream


object to write the file −

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
OutputStream f = new FileOutputStream("C:/java/hello")

Following constructor takes a file object to create an output stream


object to write the file. First, we create a file object using File()
method as follows −

File f = new File("C:/java/hello"); OutputStream f = new


FileOutputStream(f);

Once you have OutputStream object in hand, then there is a list of


helper methods, which can be used to write to stream or to do other
operations on the stream.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
S.No Method & Description

public void close() throws This method closes the file output stream.
IOException{} : Releases any system resources associated
with the file. Throws an IOException.

protected void finalize()throws This method cleans up the connection to the


IOException {} : file. Ensures that the close method of this file
output stream is called when there are no
more references to this stream. Throws an
IOException.

public void write(int w)throws This methods writes the specified byte to the
IOException{} : output stream.

public void write(byte[] w) : Writes w.length bytes from the mentioned


byte array to the OutputStream.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
There are other important output streams available, for more detail
you can refer to the following links −

- ByteArrayOutputStream
- DataOutputStream

Example
Following is the example to demonstrate InputStream and
OutputStream −

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Example:
import java.io.*; InputStream is = new
public class fileStreamTest { FileInputStream("test.txt");
public static void main(String args[]) { int size = is.available();
try { for(int i = 0; i < size; i++)
{ System.out.print((char)is.read() + " ");
byte bWrite [] = {11,21,3,40,5};
}
OutputStream os = new
FileOutputStream("test.txt"); is.close();
for(int x = 0; x < bWrite.length ; x++) { }
catch (IOException e)
os.write( bWrite[x] );
{ System.out.print("Exception");
} os.close();
}}}

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
The above code would create file test.txt and would write given
numbers in binary format. Same would be the output on the stdout
screen.

File Navigation and I/O :


There are several other classes that we would be
going through to get to know the basics of File Navigation and I/O.

File Class
FileReader Class
FileWriter Class

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Directories in Java :
A directory is a File which can contain a list of
other files and directories. You use File object to create directories,
to list down files available in a directory. For complete detail, check a
list of all the methods which you can call on File object and what are
related to directories.

Creating Directories :
There are two useful File utility methods,
which can be used to create directories −

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
- The mkdir( ) method creates a directory, returning true on
success and false on failure. Failure indicates that the path specified
in the File object already exists, or that the directory cannot be
created because the entire path does not exist yet.

- The mkdirs() method creates both a directory and all the parents


of the directory.

Following example creates "/tmp/user/java/bin" directory −

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Example :

import java.io.File;
public class CreateDir {
public static void main(String args[]) {
String dirname = "/tmp/user/java/bin";
File d = new File(dirname); // Create directory now.
d.mkdirs();
}}

Compile and execute the above code to create "/tmp/user/java/bin".

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Listing Directories :
You can use list( ) method provided by File object to list
down all the files and directories available in a directory as follows −
Example
import java.io.File;
public class ReadDir {
public static void main(String[] args) {
File file = null;
String[] paths;
try { // create new file object
file = new File("/tmp");

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
// array of files and directory
paths = file.list(); // for each name in the path array
for(String path:paths) { // prints filename and directory name
System.out.println(path);
}}
catch (Exception e) { // if any error occurs
e.printStackTrace();
}}}

This will produce the following result based on the directories and files available
in your /tmp directory −

Output
test1.txt test2.txt ReadDir.java ReadDir.class

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
MCQ’S

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
1. The …………………… package contains a large
number of stream classes that provide capabilities for
processing all types of data.
A) java.awt
B) java.io
C) java.util
D) java.net

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
2. Which of these is used to perform all input &
output operations in Java?
A. streams
B. Variables
C. classes
D. Methods

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
3. What does AWT stands for?

A. All Window Tools


B. All Writing Tools
C. Abstract Window Toolkit
D. Abstract Writing Toolkit

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
4. Which of these is a type of stream in Java?

A. Integer stream
B. Short stream
C. Byte stream
D. Long stream

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
5. Which of these classes are used by character
streams for input and output operations?

A. InputStream
B. Writer
C. ReadStream
D. InputOutputStream

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
6. Which of these class is used to read from byte
array?

A. InputStream.
B. BufferedInputStream.
C. ArrayInputStream.
D. ByteArrayInputStream.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
7. Which exception is thrown by read() method?

A. IOException
B. InterruptedException
C. SystemException
D. SystemInputException

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
8. Which of these is used to read a string from
the input stream?

A. get()
B. getLine()
C. read()
D. readLine()

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
9. Which of these class is used to read
characters and strings in Java from console?

A. BufferedReader
B. StringReader
C. BufferedStreamReader
D. InputStreamReader

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
10. Which of these classes are used by Byte
streams for input and output operation?

A. InputStream
B. InputOutputStream
C. Reader
D. All of the mentioned

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
11. Which of these class is implemented by
FilterInputStream class?

A. InputStream
B. BufferedInputStream
C. FileInputStream
D. BufferedFileInputStream

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
12. Which of these class contains the methods
print() & println()?

A. System
B. System.out
C. BUfferedOutputStream
D. PrintStream

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
13. Which of these methods can be used to
writing console output?

A. print()
B. println()
C. write()
D. All of the mentioned

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
14. Which of these class is used to create an
object whose character sequence is mutable?

A. String()
B. StringBuffer()
C. Both of the mentioned
D. None of the mentioned

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
15. Which of these method of class StringBuffer
is used to reverse sequence of characters?

A. reverse()
B. reverseall()
C. Reverse()
D. reverseAll()

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
16. Which of these classes are used by character
streams output operations?

A. InputStream
B. Writer
C. ReadStream
D. InputOutputStream

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
17. Which of the following statement is correct?

A. reverse() method reverses all characters.


B. reverseall() method reverses all characters.
C. replace() method replaces first occurrence of a
character in invoking string with another character.
D. replace() method replaces last occurrence of a
character in invoking string with another character.

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
18. Which of these classes are used by Byte
streams for input and output operation?

A. InputStream
B. InputOutputStream
C. Reader
D. All of the mentioned

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
19. Which of these method of FileReader class is
used to read characters from a file?
a) read()
b) scanf()
c) get()
d) getInteger()

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
20. What will be the output of the following Java program?

import java.io.*;
class Chararrayinput
{
public static void main(String[] args)
{
String obj = "abcdef";
int length = obj.length();
char c[] = new char[length];
obj.getChars(0,length,c,0);
CharArrayReader input1 = new CharArrayReader(c);
CharArrayReader input2 = new CharArrayReader(c, 0, 3);
int i;

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
try
{
while ((i = input1.read()) != -1)
{
System.out.print((char)i);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
a) abc
b) abcd
c) abcde
d) abcdef

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Answers
1. B 11. C
2. A 12. D
3. C 13. D
4. C 14. B
5. B 15. A
6. D 16. B
7. A 17. A
8. A 18. A
9. D 19. A
10. A 20. D

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.
Thank You

SMART TRAINING RESOURCES INDIA PVT. LTD. © 2018 SMART Training Resources Pvt. Ltd.

You might also like