Java IO Tutorial
- Get link
- X
- Other Apps
Java IO
Tutorial
Hi Friends In, this tutorial i will going to explain
about Java I/O. Basically Java I/O (Input and Output) is used to process the
input and produce the output. Java uses the concept of a stream to make I/O
operation fast. The java.io package contains all the classes required for input
and output operations.
Java IO Overview
A good place
to start learning about Java IO is the Java IO Overview tutorial. That tutorial
gives you a quick overview of the central concepts in the Java IO API, and an
overview of all the central classes in the Java IO API.
Java IO is
an API that comes with Java which is targeted at reading and writing data
(input and output). Most applications need to process some input and produce
some output based on that input. For instance, read data from a file or over
network, and write to a file or write a response back over the network.
The Java IO
API is in the Java IO package (java.io). If you look at the Java IO classes in
the java.io package the vast amount of choices can be rather confusing. What is
the purpose of all these classes? Which one should you choose for a given task?
How do you create your own classes to plugin? etc.
The purpose
of this tutorial is to try to give you an overview of how all information related
to Java I/O and the classes which are grouped in this package, and the purpose
behind them, so you don't have to wonder whether you chose the right class, or
whether a class already exists for your purpose.
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.
Java IO
Class Overview Table
Here is a table listing most (if not all) Java IO classes divided by
input, output, being byte based or character based, and any more specific
purpose they may be addressing, like buffering, parsing etc.
Stream
A stream can be defined as a sequence of data.
There are two kinds of Streams −
InPutStream − The InputStream is used to read data
from a source.
OutPutStream − The OutputStream is used for writing data to a destination.
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 −
Example
import java.io.*; public class CopyFileTo { public static void main(String args[]) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("input.txt"); out = new FileOutputStream("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
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
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 −
Example
import java.io.*; public class CopyFileTo { public static void main(String args[]) throws IOException { FileReader in = null; FileWriter out = null; try { in = new FileReader("input.txt"); out = new FileWriter("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
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
Reading and Writing File
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.
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");
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.
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 −
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.
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 −
import java.io.*; public class fileStream { public static void main(String args[]) { try { byte bWrite [] = {11,21,3,40,5}; OutputStream os = new FileOutputStream("test1.txt"); for(int x = 0; x < bWrite.length ; x++) { os.write( bWrite[x] ); // writes the bytes } os.close(); InputStream is = new FileInputStream("test2.txt"); int size = is.available(); for(int i = 0; i < size; i++) { System.out.print((char)is.read() + " "); } is.close(); } catch (IOException e) { System.out.print("Exception"); } } }
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.
If you like this article please subscribe my blogs to encourage me to create more content like this.
If you want to understand this in hindi Please click the play button.
Thanks for Watching!!!!!!
Best Regards
Learn with Reshu
#learnwithreshu
- Get link
- X
- Other Apps
Comments
Post a Comment
Please do not comment any spam link in the comment box