Java - RandomAccessFile writeChars(String s) method



Description

The Java RandomAccessFile writeChars(String s) method writes a string to the file as a sequence of characters. Each character is written to the data output stream as if by the writeChar method. The write starts at the current position of the file pointer.

Declaration

Following is the declaration for java.io.RandomAccessFile.writeChars(String s) method.

public final void writeChars(String s)

Parameters

s − a string value to be written.

Return Value

This method does not return a value.

Exception

  • IOException − If an I/O error occurs.

Example - Usage of RandomAccessFile writeChars(String s) method

The following example shows the usage of RandomAccessFile writeChars(String s) method.

RandomAccessFileDemo.java

package com.tutorialspoint;

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

public class RandomAccessFileDemo {
   public static void main(String[] args) {
   
      try {
         String s = "Hello World";

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

         // write a char in the file
         raf.writeChars(s);

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

         // read chars
         for (int i = 0; i < 11; i++) {
            System.out.print(raf.readChar());
         }

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

         // change the line for better view
         System.out.println();

         // write a char at the start
         raf.writeChars("This is an example");

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

         // read chars
         for (int i = 0; i < 18; i++) {
            System.out.print(raf.readChar());
         }
         
      } 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
This is an example

Example - Write a Simple String

The following example shows the usage of RandomAccessFile writeChars(String s) 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("chars1.dat", "rw")) {
         raf.writeChars("Hi");
         System.out.println("String written successfully.");
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

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

String written successfully.

Explanation

  • The string "Hi" has two characters: 'H' and 'i'

  • Each is written as a 2-byte Unicode character−

    • 'H' → 0x00 48

    • 'i' → 0x00 69

  • Total: 4 bytes written

Example - Write a String and Read It Back Using readChar()

The following example shows the usage of RandomAccessFile writeChars(String s) 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("chars2.dat", "rw")) {
         raf.writeChars("ABC");

         // Move to beginning
         raf.seek(0);

         // Read each character back
         char ch1 = raf.readChar();
         char ch2 = raf.readChar();
         char ch3 = raf.readChar();

         System.out.println("Read characters: " + ch1 + ", " + ch2 + ", " + ch3);
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

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

Read characters: A, B, C

Explanation

  • "ABC" has 3 characters → 6 bytes written (2 bytes per char)

  • seek(0) moves file pointer back to beginning

  • readChar() reads the characters as written.

java_io_randomaccessfile.htm
Advertisements