Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
2 views

inputoutput in java

The document provides an overview of input/output operations in Java, detailing the various streams available for handling data, including standard input/output streams (System.in, System.out, System.err) and their associated methods (print, println, printf). It explains the differences between byte streams and character streams, highlighting classes such as FileInputStream, FileOutputStream, FileReader, and FileWriter, along with examples of reading from and writing to files. Additionally, it discusses the benefits of using BufferedInputStream and BufferedOutputStream to enhance performance during I/O operations.

Uploaded by

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

inputoutput in java

The document provides an overview of input/output operations in Java, detailing the various streams available for handling data, including standard input/output streams (System.in, System.out, System.err) and their associated methods (print, println, printf). It explains the differences between byte streams and character streams, highlighting classes such as FileInputStream, FileOutputStream, FileReader, and FileWriter, along with examples of reading from and writing to files. Additionally, it discusses the benefits of using BufferedInputStream and BufferedOutputStream to enhance performance during I/O operations.

Uploaded by

middenchopra
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 17

Input/output in Java

Java brings various Streams with its I/O package that helps the user to perform all the input-
output operations. These streams support all the types of objects, data-types, characters, files etc
to fully execute the I/O operations.

Before exploring various input and output streams lets look at 3 standard or default streams that
Java has to provide which are also most common in use:

System.in: This is the standard input stream that is used to read characters from the keyboard or
any other standard input device.

System.out: This is the standard output stream that is used to produce the result of a program on
an output device like the computer screen.

Here is a list of the various print functions that we use to output statements:

print(): This method in Java is used to display a text on the console. This text is passed as the
parameter to this method in the form of String. This method prints the text on the console and the
cursor remains at the end of the text at the console. The next printing takes place from just here.

Syntax:

System.out.print(parameter);
Example:

// Java code to illustrate print()

Import java.io.*;

class Demo_print {

public static void main(String[] args)

// using print()

// all are printed in the

// same line

System.out.print("GfG! ");

System.out.print("GfG! ");

System.out.print("GfG! ");

Output:

GfG! GfG! GfG!

println(): This method in Java is also used to display a text on the console. It prints the text on
the console and the cursor moves to the start of the next line at the console. The next printing
takes place from the next line.

Syntax:

System.out.println(parameter);

Example:

// Java code to illustrate println()


Import java.io.*;

class Demo_print {

public static void main(String[] args)

// using println()

// all are printed in the

// different line

System.out.println("GfG! ");

System.out.println("GfG! ");

System.out.println("GfG! ");

Output:

GfG!

GfG!

GfG!

printf(): This is the easiest of all methods as this is similar to printf in C. Note that
System.out.print() and System.out.println() take a single argument, but printf() may take multiple
arguments. This is used to format the output in Java.

Example:

// A Java program to demonstrate working of printf() in Java

Class JavaFormatter1 {

Public static void main(String args[])


{

intx = 100;

System.out.printf( "Printing simple"+ " integer: x = %d\n", x);

// this will print it upto

// 2 decimal places

System.out.printf( "Formatted with" + " precision: PI = %.2f\n", Math.PI);

floatn = 5.2f;

// automatically appends zero

// to the rightmost part of decimal

System.out.printf( "Formatted to " + "specific width: n = %.4f\n", n);

n = 2324435.3f;

// here number is formatted from

// right margin and occupies a

// width of 20 characters

System.out.printf("Formatted to "+ "right margin: n = %20.4f\n",n);

Output:

Printing simple integer: x = 100

Formatted with precision: PI = 3.14

Formatted to specific width: n = 5.2000

Formatted to right margin: n = 2324435.2500

System.err: This is the standard error stream that is used to output all the error data that a
program might throw, on a computer screen or any standard output device.

This stream also uses all the 3 above-mentioned functions to output the error data:
print()

println()

printf()

Example:

// Java code to illustrate standard

// input output streams

Import java.io.*;

public class SimpleIO {

public static void main(String args[]) throws IOException

// Input Stream Reader class to read input

InputStreamReader inp = null;

// Storing the input in inp

inp = new InputStreamReader(System.in);

System.out.println("Enter characters, "+ " and '0' to quit.");

charc;

do{

c = (char)inp.read();

System.out.println(c);

} while(c != '0');

Input:

GeeksforGeeks0
Output:

Enter characters, and '0' to quit.

G
e
e
k
s
f
o
r
G
e
e
k
s
0

Types of Streams:

Depending on the type of operations, streams can be divided into two primary classes:

Input Stream: These streams are used to read data that must be taken as an input from a source
array or file or any peripheral device. For eg., FileInputStream, BufferedInputStream,
ByteArrayInputStream etc.

Output Stream: These streams are used to write data as outputs into an array or file or any
output peripheral device. For eg., FileOutputStream, BufferedOutputStream,
ByteArrayOutputStream etc.

Depending on the types of file, Streams can be divided into two primary classes which can be
further divided into other classes as can be seen through the diagram below followed by the
explanations.

ByteStream: This is used to process data byte by byte (8 bits). Though it has many classes, the
FileInputStream and the FileOutputStream are the most popular ones. The FileInputStream is
used to read from the source and FileOutputStream is used to write to the destination. Here is the
list of various ByteStream Classes:
Stream class Description

BufferedInputStream It is used for Buffered Input Stream.

DataInputStream It contains method for reading java standard datatypes.

FileInputStream This is used to reads from a file

InputStream This is an abstract class that describes stream input.

PrintStream This contains the most used print() and println() method

BufferedOutputStream This is used for Buffered Output Stream.

DataOutputStream This contains method for writing java standard data types.

FileOutputStream This is used to write to a file.

OutputStream This is an abstract class that describe stream output.


1. Example:

// Java Program illustrating the

// Byte Stream to copy

// contents of one file to another file.

Import java.io.*;

public class BStream {

public static void main(String[] args) throws IOException

FileInputStream sourceStream = null;

FileOutputStream targetStream = null;

try{

sourceStream = new FileInputStream("sorcefile.txt");

targetStream = new FileOutputStream("targetfile.txt");


// Reading source file and writing

// content to target file byte by byte

Int temp;

while(( temp = sourceStream.read())!= -1)

targetStream.write((byte)temp);

finally{

if(sourceStream != null)

sourceStream.close();

if(targetStream != null)

targetStream.close();

Output:

Shows contents of file test.txt

CharacterStream: In Java, characters are stored using Unicode conventions (Refer this for
details). Character stream automatically allows us to read/write data character by character.
Though it has many classes, the FileReader and the FileWriter are the most popular ones.
FileReader and FileWriter are character streams used to read from the source and write to the
destination respectively. Here is the list of various CharacterStream Classes:

Stream class Description

BufferedReader It is used to handle buffered input stream.

FileReader This is an input stream that reads from file.

InputStreamReader This input stream is used to translate byte to character.


Stream class Description

OutputStreamReader This output stream is used to translate character to byte.

Reader This is an abstract class that define character stream input.

PrintWriter This contains the most used print() and println() method

Writer This is an abstract class that define character stream output.

BufferedWriter This is used to handle buffered output stream.

FileWriter This is used to output stream that writes to file.

2. Example:

// Java Program illustrating that

// we can read a file in a human-readable

// format using FileReader

// Accessing FileReader, FileWriter,

// and IOException

Import java.io.*;

Public class GfG {

Public static void main(String[] args) throws IOException

FileReader sourceStream = null;

try{

sourceStream = new FileReader("test.txt");

// Reading sourcefile and

// writing content to target file

// character by character.
Int temp;

while((temp = sourceStream.read())!= -1)

System.out.println((char)temp);

finally{

// Closing stream as no longer in use

if(sourceStream != null)

sourceStream.close();

Reading and Writing Files


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.


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.

Sr.N
Method & Description
o.

public void close() throws IOException{}


1
This method closes the file output stream. Releases any system resources associated with the
file. Throws an IOException.
protected void finalize()throws IOException {}
2 This method cleans up the connection to the 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 int read(int r)throws IOException{}
3
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 IOException{}
4
This method reads r.length bytes from the input stream into an array. Returns the total number
of bytes read. If it is the end of the file, -1 will be returned.

5 public int available() throws IOException{}


Gives the number of bytes that can be read from this file input stream. Returns an int.

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.

Sr.N
Method & Description
o.

public void close() throws IOException{}


1
This method closes the file output stream. Releases any system resources associated with the
file. Throws an IOException.
protected void finalize()throws IOException {}
2 This method cleans up the connection to the 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.

3 public void write(int w)throws IOException{}


This methods writes the specified byte to the output stream.

4 public void write(byte[] w)


Writes w.length bytes from the mentioned byte array to the OutputStream.

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.OutputStream;

public class fileStreamTest {

public static void main(String args[]) {


try {
byte bWrite [] = {11,21,3,40,5};
OutputStream os = new FileOutputStream("test.txt");
for(int x = 0; x < bWrite.length ; x++) {
os.write( bWrite[x] ); // writes the bytes
}
os.close();

InputStream is = new FileInputStream("test.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.

BufferedInputStream and BufferedOutputStream Classes in Java

BufferedInputStream and BufferedOutputStream are two classes in Java that are used to
improve the performance of input and output operations. They do this by buffering data,
which means that they store a small amount of data in memory before writing it to or
reading it from the underlying stream. This can improve performance because it reduces the
number of times that the underlying stream needs to be accessed.

BufferedInputStream and BufferedOutputStream can be used with any type of stream, but
they are especially useful for streams that are slow to access, such as network streams or
file streams.

BufferedInputStream and BufferedOutputStream are very useful classes for improving the
performance of input and output operations. They are easy to use and can be used with any
type of stream.

Here are some additional things to keep in mind when using BufferedInputStream and
BufferedOutputStream:

 BufferedInputStream and BufferedOutputStream are both AutoCloseable classes. This


means that they can be automatically closed using the try-with-resources statement.
 BufferedInputStream and BufferedOutputStream both have a default buffer size of
8192 bytes. However, you can specify a different buffer size when you create the
object.
 BufferedInputStream and BufferedOutputStream can be used to read and write data
from and to any stream, not just files.
Methods of BufferedInputStream Class
Method Description

Returns an estimate of the number of bytes that can be read (or


available() skipped over) from this input stream without blocking, which may
be 0, or 0 when end of stream is detected.

Closes this input stream and releases any system resources


close()
associated with this stream.

Marks the current position in this input stream. A subsequent


mark(int readlimit)
`reset()` will attempt to reposition the stream to this point.

Tells whether this input stream supports the `mark()` and


markSupported()
`reset()` methods.

read() Reads a byte of data from this input stream.

Reads up to `b.length` bytes of data from this input stream into


read(byte[] b)
an array of bytes.

read(byte[] b, int off, Reads up to `len` bytes of data from this input stream into an
int len) array of bytes, starting at offset `off` in the array.

Repositions this stream to the position at which the last `mark()`


reset()
was set.

skip(long n) Skips over and discards `n` bytes of data from this input stream.

Methods of BufferedOutputStream Class


Method Description

Closes this output stream and releases any system resources


close()
associated with this stream.

Flushes this output stream and forces any buffered output bytes
flush()
to be written out to the underlying device.

write() Writes a byte to this output stream.

write(byte[] b) Writes `b.length` bytes from the specified byte array to this
Method Description

output stream.

write(byte[] b, int off, Writes `len` bytes from the specified byte array starting at offset
int len) `off` to this output stream.

Code for Writing and Reading Data from the buffer using BufferedInputStream and
BufferedOutputStream

package practiceproject;
import java.io.*;
import java.util.*;
public class democlass {

public static void main(String[] args) throws IOException {

File obj = new File("satish.txt");


BufferedOutputStream bout = new BufferedOutputStream(new
FileOutputStream(obj));
bout.write(2);
System.out.println("file writing successful");
bout.close();
BufferedInputStream bin = new BufferedInputStream(new
FileInputStream(obj));
int data=bin.read();
System.out.println(data);
bin.close();
}
}
Copy

Code to read data from the buffer after skipping a byte using BufferedInputStream

package practiceproject;
import java.io.*;
import java.util.*;
public class democlass {

public static void main(String[] args) throws IOException {

File obj = new File("satish.txt");


BufferedInputStream bin = new BufferedInputStream(new
FileInputStream(obj));
int data=bin.read();
System.out.println(data);
System.out.println(bin.skip(1));
int data1=bin.read();
System.out.println((char)data1);

}
}

You might also like