java examples
Home Java Examples Resources Java Interview Questions
Brainpower SEO

How to use DataInputStream and DataOutputStream?

DataOutputStream and DataInputStream give us the power to write and read primitive data type to a media such as file. Both of this class have the corresponding method to write primitive data and read it back.

Using this class make it easier to read integer, float, double data and others without needing to interpret if the read data should be an integer or a float data. Let's see our code below.

package com.javacoderanch.example.io;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class PrimitiveStreamExample {

    public static void main(String[] args) {
        //
        // Prepares some data to be written to a file.
        //
        int cityIdA = 1;
        String cityNameA = "Green Lake City";
        int cityPopulationA = 500000;
        float cityTempA = 15.50f;

        int cityIdB = 2;
        String cityNameB = "Salt Lake City";
        int cityPopulationB = 250000;
        float cityTempB = 10.45f;

        try {
            //
            // Create an instance of FileOutputStream with cities.dat as the
            // file name to be created. Then we pass the input stream object
            // in the DataOutputStream constructor.
            //
            FileOutputStream fos = new FileOutputStream("cities.dat");
            DataOutputStream dos = new DataOutputStream(fos);

            //
            // Below we write some data to the cities.dat. DataOutputStream class
            // have various method that allow us to write primitive type data and 
            // string. There are method called writeInt(), writeFloat(), 
            // writeUTF(), etc.
            //
            dos.writeInt(cityIdA);
            dos.writeUTF(cityNameA);
            dos.writeInt(cityPopulationA);
            dos.writeFloat(cityTempA);

            dos.writeInt(cityIdB);
            dos.writeUTF(cityNameB);
            dos.writeInt(cityPopulationB);
            dos.writeFloat(cityTempB);

            dos.flush();
            dos.close();

            //
            // Now we have a cities.dat file with some data in it. Next you'll
            // see how easily we can read back this data and display it. Just
            // like the DataOutputStream the DataInputStream class have the
            // corresponding read methods to read data from the file. Some of
            // the method names are readInt(), readFloat(), readUTF(), etc.
            //
            FileInputStream fis = new FileInputStream("cities.dat");
            DataInputStream dis = new DataInputStream(fis);

            int cityId = dis.readInt();
            System.out.println("City Id: " + cityId);
            String cityName = dis.readUTF();
            System.out.println("City Name: " + cityName);
            int cityPopulation = dis.readInt();
            System.out.println("City Population: " + cityPopulation);
            float cityTemperature = dis.readFloat();
            System.out.println("City Temperature: " + cityTemperature);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

The generated result of our program are:

City Id: 1
City Name: Green Lake City
City Population: 500000
City Temperature: 15.5