RandomAccessFile provides you to read or write data from or to in a file at any location. It supports you to move around the file, and read from it and write to it, where ever you like.
It has these two constructors:
RandomAccessFile(File fileObj, String accessType) throws FileNotFoundException
here, fileObj specifies the name of the file to open as a File object.
RandomAccessFile(String filename, String accessType) throws
FileNotFoundException
here, the name of the file is passed in filename as string.
Example:
RandomAccessFile fileObj = new RandomAccessFile(“a.txt”, “rw);
In both constructors, accessType determines what type of file access is permitted. There are following cases, if access Type is:
“r”, then the file can be read, not written
“rw”, then file is opened in read-write mode.
“rws”, then file is opened in read-write mode, both operations can be performed, and every changes to file will update to underlying file written on physical device.
To search or seek a position to perform either operation seek() method is used and it’s prototype is
given below:
void seek(long newposition) throws IOException
Here, newPosition specifies the new position, in bytes, of the file pointer from where next read or write operation will occur at the new file position.
The current position of the file pointer can be obtained by calling the getPilePointer() method.
Example:
RandomAccessFile fileObj = new RandomAccesSFile(“a.txt”, “rw);
fileObj.seek(40);
long pointer = fileObj.getFilepointer();
fileObj.close();
RandomAccessFile includes some additional methods. One of them is setLength( ). It has this signature:
void setLength(long length) throws IOException
This method is used to fix the length of the file.
Reading from a RandomAccessFile is done using one read() methods.
Example:
RandomAccessFile fileObj = new RandomAccesSFile(“a.txt”, “rw);
int a = fileObj.read();
fileObj.close();
Writing to a RandomAccessFile can be done using one it its many write() methods.
Example:
RandomAccessFile file = new RandomAccesSFile(“c:\\data\\file.txt”, “rw);
file.write(“Hello World”.getBytes());
file.close();
Example: Write to a file
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccess
{
public static void main(String ar[])
{
try
{
RandomAccessFile raObject = new RandomAccessFile(“a.txt”, “rw”) ;
String data[] = new String[5];
data[0] =”Learning”;
data[1] = “Random”;
data[2] = “Access”;
data[3] = “File”;
data [4] = ” class.”;
for (int i = 0; i < data. length; i++)
{
raObject.writeUTF(data[i]);
}
raObject.seek(raObject.length());
raObject.writeUTF(“Now I now how to work with RandomAccessFile”);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}}
Output