What is the necessity of byte streams and character streams in Java?


Java provides I/O Streams to read and write data where, a Stream represents an input source or an output destination which could be a file, i/o devise, other program etc.

Based on the data they handle there are two types of streams −

Byte Streams

These handle data in bytes (8 bits) i.e., the byte stream classes read/write data of 8 bits. Using these you can store characters, videos, audios, images etc.

The InputStream and OutputStream classes (abstract) are the super classes of all the input/output stream classes: classes that are used to read/write a stream of bytes. Following are the byte array stream classes provided by Java −

InputStream
OutputStream
FIleInputStream
FileOutputStream
ByteArrayInputStream
ByteArrayOutputStream
ObjectInputStream
ObjectOutputStream
PipedInputStream
PipedOutputStream
FilteredInputStream
FilteredOutputStream
BufferedInputStream
BufferedOutputStream
DataInputStream
DataOutputStream

Example

Following Java program reads data from a particular file using FileInputStream and writes it to another, using FileOutputStream.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IOStreamsExample {
   public static void main(String args[]) throws IOException {
      //Creating FileInputStream object
      File file = new File("D:/myFile.txt");
      FileInputStream fis = new FileInputStream(file);
      byte bytes[] = new byte[(int) file.length()];
      //Reading data from the file
      fis.read(bytes);
      //Writing data to another file
      File out = new File("D:/CopyOfmyFile.txt");
      FileOutputStream outputStream = new FileOutputStream(out);
      //Writing data to the file
      outputStream.write(bytes);
      outputStream.flush();
      System.out.println("Data successfully written in the specified file");
   }
}

Output

Data successfully written in the specified file

Character Streams - These handle data in 16 bit Unicode. Using these you can read and write text data only.

The Reader and Writer classes (abstract) are the super classes of all the character stream classes: classes that are used to read/write character streams. Following are the character array stream classes provided by Java −

Reader
Writer
BufferedReader
BufferedWriter
CharacterArrayReader
CharacterArrayWriter
StringReader
StringWriter
FileReader
FileWriter
InputStreamReader
InputStreamWriter
FileReader
FileWriter

Example

Following Java program reads data from a particular file using FileReader and writes it to another, using FileWriter.

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class IOStreamsExample {
   public static void main(String args[]) throws IOException {
      //Creating FileReader object
      File file = new File("D:/myFile.txt");
      FileReader reader = new FileReader(file);
      char chars[] = new char[(int) file.length()];
      //Reading data from the file
      reader.read(chars);
      //Writing data to another file
      File out = new File("D:/CopyOfmyFile.txt");
      FileWriter writer = new FileWriter(out);
      //Writing data to the file
      writer.write(chars);
      writer.flush();
      System.out.println("Data successfully written in the specified file");
   }
}

Output

Data successfully written in the specified file

Updated on: 01-Aug-2019

445 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements