Updated May 26, 2023
Introduction to Java RandomAccessFile
The following article provides an outline for Java RandomAccessFile. The java RandomAccessFile is a class that is used to read and write for a random access file. The RandomAccessFile class is a built-in class in java that defines the java.io.RandomAccessFile package. The random access file is like an array of bytes stored in a file system. Instances. The RandomAccessFile supports both the read and write operation to the random access file. This file maintains a cursor or pointer; by moving the pointer to a specific position, we can perform the read or write operation to the specific position. The EOF Exception is thrown when the file reaches the end of the file before the required number of bytes has been read.
Syntax of RandomAccessFile class in java:
Given below is the declaration syntax of java.io.RandomAccessFile class:
public class RandomAccessFile extends Object implements DataInput,DataOutput, Closeable
{
// Constructors and methods of the RandomAccessFile class
}
The above is the syntax of the RandomAccessFile, where it extends to the Object class and implements to the DataOutput, DataInput and Closeable interfaces.
RandomAccessFileclass member Functions:
TheRandomAccessFileclass contains constructors and some functions as a RandomAccessFile class member function.
Constructors of Java RandomAccessFile Class
Given below are the constructors:
- RandomAccessFile( File f, String opt ): This constructor creates an instance of RandomAccessFile by creating a random access file to read or write (optionally) from or to the specified file in the File.
- RandomAccessFile(String fname, String opt): This constructor creates an instance of RandomAccessFile by creating a random access file to read or write (optionally) from or to the specified file in the name.
Functions of Java FileInputStream Class
Given below are the functions of the Java FileInputStream Class:
- int read(): This function is used to read a byte of data from the file.
- intread(byte[] b): This function is used to read an array of bytes up to b.length bytes.
- int read(byte[] b, int off, intlen): This function is used to read bytes of data from the input stream up to specified len into destination b array at start offset.
- int readInt(): This function is used to read a signed 32-bit integer from the file.
- String readUTF(): This function is used to read the file in the form of a string.
- FileChannelgetChannel(): This function is used to get the unique FileChannel object of the input file.
- voidseek(long byte): This function is used to set the offset of the file pointer for the next read or write from the beginning of the file.
- intskipBytes(int): This function skip n bytes of input.
- void write(int b): This function is used to write the pass byte to the file.
- void write(byte[] b): This function write b.length bytes from the specified byte array starting at offset off to this file.
- void write(byte[] b, int off, intlen): This function write len bytes to file from the pass byte of the array starting at offset off.
- void writeDouble(double value): This function is used to convert and write the converted specified double value to long (which uses the doubleToLongBits function of class Double) to the file as an 8-byte quantity where the first byte is high.
- A void writeFloat( float value): This function is used to convert and write the converted specified float value to an int (which uses the floatToIntBits function of class Float) to the file 4-byte quantity where the first byte is high.
- longlength(): This function is used to get the length of the file.
- FileDescriptorgetFD(): This function is used to get the file descriptor object of the file.
- long getFilePointer(): This function is used to get the current offset of the file.
- void close(): This function is used to close the random access file and release stream and release the file resource.
Examples of Java RandomAccessFile
Given below are the examples mentioned:
Example #1
We create RandomAccessFile objects by using the RandomAccessFile class constructor and pass the file name to read and write a character.
Code:
//package demo;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Demo
{
public static void main(String[] args) throws Exception
{
int i;
char c;
try {
// data.txt file contain "Hello!, How are you?" data in it
RandomAccessFile f1 = new RandomAccessFile("D:\\data.txt", "r");
i = f1.read();
c = (char) i;
System.out.println("The First byte is :" +c);
System.out.println("The Number of remaining bytes are :" +f1.length());
// seek method to seek 4 bytes
f1.seek(4);
i = f1.read();
// converts byte to character
c = (char) i;
System.out.println("The Next byte after 4 byte seek is :" +c);
// getChannel() method
System.out.println("\nThe unique FileChannel object is : " +f1.getChannel());
// getFD() method
System.out.println("The FileDescriptor object is : " +f1.getFD());
// getFilePointer() method
System.out.println("The FilePointer offset is : " +f1.getFilePointer());
RandomAccessFile f2 = new RandomAccessFile("D:\\data.txt", "rw");
//seek 10 bytes and write this message to file
f2.seek(10);
f2.write("I am good.".getBytes());
f1.close();
f2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output:
Example #2
RandomAccessFile class, where we read the data into the byte array.
Code:
//package demo;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Demo
{
public static void main(String[] args) throws Exception
{
byte[] b = new byte[16];
int i;
char c;
try {
// data.txt file contain "Hello!, How are you?" data in it
RandomAccessFile f1 = new RandomAccessFile("D:\\data.txt", "r");
i = f1.read(b, 1, 15);
System.out.println("The total bytes read are : "+i);
System.out.print("The bytes read are : ");
for(byte t : b) {
c = (char)t;
System.out.print(c);
}
f1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output:
Conclusion
The RandomAccessFile is a class in java that is used to read and write to a random access file. This is a built-in class in java that defines the java.io.RandomAccessFilepackage.
Recommended Articles
This is a guide to Java RandomAcessFile. Here we discuss the introduction to Java RandomAccessFile, constructors, and functions of FileInputStream class with respective examples. You may also have a look at the following articles to learn more –