Java - RandomAccessFile readFloat() method



Description

The Java RandomAccessFile readFloat() method reads a float from this file. This method reads an int value, starting at the current file pointer, as if by the readInt method and then converts that int to a float using the intBitsToFloat method in class Float.

Declaration

Following is the declaration for java.io.RandomAccessFile.readFloat() method.

public final float readFloat()

Parameters

NA

Return Value

This method returns the next four bytes of this file, interpreted as a float.

Exception

  • IOException − If an I/O error occurs.Not thrown if end-of-file has been reached.

  • EOFException − If this file reaches the end before reading four bytes.

Example - Usage of RandomAccessFile readFloat() method

The following example shows the usage of RandomAccessFile readFloat() method.

RandomAccessFileDemo.java

package com.tutorialspoint;

import java.io.RandomAccessFile;
import java.io.IOException;

public class RandomAccessFileDemo {
   public static void main(String[] args) {

      try {
         float f = 1234.56f;
         
         // create a new RandomAccessFile with filename test
         RandomAccessFile raf = new RandomAccessFile("test.txt", "rw");

         // write something in the file
         raf.writeFloat(986.543f);

         // set the file pointer at 0 position
         raf.seek(0);

         // read float
         System.out.println(raf.readFloat());

         // set the file pointer at 0 position
         raf.seek(0);

         // write a float
         raf.writeFloat(f);

         // set the file pointer at 0 position
         raf.seek(0);

         // read float
         System.out.println(raf.readFloat());
      } catch (IOException ex) {
         ex.printStackTrace();
      }
   }
}

Output

Assuming we have a text file test.txt in current directory which has the following content. This file will be used as an input for our example program −

ABCDE

Let us compile and run the above program, this will produce the following result −

986.543
1234.56

Example - Writing and Reading Float Values

The following example shows the usage of RandomAccessFile readFloat() method.

RandomAccessFileDemo.java

package com.tutorialspoint;

import java.io.RandomAccessFile;
import java.io.IOException;

public class RandomAccessFileDemo {
   public static void main(String[] args) {
      try {
         RandomAccessFile raf = new RandomAccessFile("floats.dat", "rw");

         // Write float values (each takes 4 bytes)
         raf.writeFloat(1.23f);
         raf.writeFloat(4.56f);

         // Reset file pointer to the beginning
         raf.seek(0);

         // Read the float values
         float f1 = raf.readFloat();
         float f2 = raf.readFloat();

         System.out.println("First float: " + f1); // 1.23
         System.out.println("Second float: " + f2); // 4.56

         raf.close();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

First float: 1.23
Second float: 4.56

Explanation

  • writeFloat(float f) writes 4 bytes per float.

  • readFloat() reads 4 bytes and returns the float value.

  • You must read in the same order and format you wrote the data.

  • Ideal for handling compact binary files with float values.

Example - Jumping to a Specific Float

The following example shows the usage of RandomAccessFile readFloat() method.

RandomAccessFileDemo.java

package com.tutorialspoint;

import java.io.RandomAccessFile;
import java.io.IOException;

public class RandomAccessFileDemo {
    public static void main(String[] args) {
        try {
            RandomAccessFile raf = new RandomAccessFile("floats2.dat", "rw");

            // Write 3 float values
            raf.writeFloat(10.5f);  // Position 0
            raf.writeFloat(20.75f); // Position 4
            raf.writeFloat(30.25f); // Position 8

            // Jump to the second float (4 bytes per float)
            raf.seek(4);
            float second = raf.readFloat();

            System.out.println("Second float: " + second); // 20.75

            raf.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Output

Let us compile and run the above program, this will produce the following result−

Second float: 20.75

Explanation

  • Each float takes 4 bytes, so −

    • First float is at byte 0

    • Second float at byte 4

    • Third float at byte 8

  • seek(4) skips the first float and points to the second one.

  • readFloat() retrieves that specific value.

java_io_randomaccessfile.htm