Java - RandomAccessFile close() method



Description

The Java RandomAccessFile close() method closes this random access file stream and releases any system resources associated with the stream. A closed random access file cannot perform input or output operations and cannot be reopened.

close() method −

  • Closes the file and releases any system resources associated with it.

  • After calling close(), any further operations on the file (read/write) will throw an IOException.

Declaration

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

public void close()

Parameters

NA

Return Value

This method does not return a value.

Exception

IOException − If an I/O error occurs.

Example - Usage of RandomAccessFile close() method

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

RandomAccessFileDemo.java

package com.tutorialspoint;

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

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

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

         // write something in the file
         raf.writeUTF("Hello World");

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

         // read and print the contents of the file
         System.out.println("" + raf.readUTF());

         // close the strea and release resources
         System.out.println("Closing Stream...");
         raf.close();
         System.out.println("Stream Closed.");
      } 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 −

Hello World
Closing Stream...
Stream Closed.

Example - Properly closing a RandomAccessFile after writing

The following example shows the usage of RandomAccessFile close() 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("example1.txt", "rw");

         raf.writeUTF("Hello, RandomAccessFile!");
         System.out.println("Data written to file.");

         raf.close(); // Closes the file properly
         System.out.println("File closed successfully.");
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

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

Data written to file.
File closed successfully.

Explanation

  • A file named example1.txt is created (or opened), and data is written.

  • close() ensures all data is flushed to disk and the file is no longer in use.

  • Best practice to prevent resource leaks.

Example - Calling methods after close() throws an exception

The following example shows the usage of RandomAccessFile close() 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("example2.txt", "rw");
         raf.writeUTF("Testing close behavior");

         raf.close();
         System.out.println("File closed.");

         // Attempting to read after closing will throw an IOException
         raf.seek(0); // This will fail
         String data = raf.readUTF();
         System.out.println("Read after close: " + data);
      } catch (IOException e) {
         System.err.println("Exception: " + e.getMessage());
      }
   }
}

Output

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

File closed.  
Exception: Stream Closed

Explanation

  • The file is closed using raf.close().

  • Subsequent attempt to seek() or read() on the closed file throws a java.io.IOException: Stream Closed.

java_io_randomaccessfile.htm
Advertisements