
- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - RandomAccessFile seek(long pos) method
Description
The Java RandomAccessFile seek(long pos) method sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs. The offset may be set beyond the end of the file. Setting the offset beyond the end of the file does not change the file length. The file length will change only by writing after the offset has been set beyond the end of the file.
Declaration
Following is the declaration for java.io.RandomAccessFile.seek(long pos) method.
public void seek(long pos)
Parameters
pos − The offset position, measured in bytes from the beginning of the file, at which to set the file pointer.
Return Value
This method does not return a value.
Exception
IOException − If pos is less than 0 or if an I/O error occurs.
Example - Usage of RandomAccessFile seek(long pos) method
The following example shows the usage of RandomAccessFile seek(long pos) method.
RandomAccessFileDemo.java
package com.tutorialspoint; import java.io.RandomAccessFile; import java.io.IOException; 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); // print the string System.out.println(raf.readUTF()); // set the file pointer at 5 position raf.seek(5); // write something in the file raf.writeUTF("This is an example"); // set the file pointer at 0 position raf.seek(0); // print the string System.out.println(raf.readUTF()); } 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 Hel This i
Example - Jump to a Specific Byte Position in a File
The following example shows the usage of RandomAccessFile seek(long pos) 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("seek1.dat", "rw"); // Write some bytes raf.writeBytes("ABCDEFGH"); // Move to byte position 3 (4th byte) raf.seek(3); // Read the byte at position 3 int b = raf.read(); System.out.println("Byte at position 3: " + (char) b); // Output: D raf.close(); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Byte at position 3: D
Explanation
seek(3) moves the file pointer to the 4th byte (index starts at 0).
read() then reads the byte at that exact position.
Useful when you need to read from or write to a specific location in a file, like updating a record in place.
Example - Overwrite Data at a Specific Position
The following example shows the usage of RandomAccessFile seek(long pos) 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("seek2.dat", "rw"); // Write initial content raf.writeBytes("1234567890"); // Overwrite at position 5 raf.seek(5); raf.writeBytes("XYZ"); // Reset pointer and read whole file raf.seek(0); byte[] data = new byte[10]; raf.readFully(data); System.out.println("Updated file: " + new String(data)); // Output: 12345XYZ90 raf.close(); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Updated file: 12345XYZ90
Explanation
seek(5) moves the file pointer to the 6th byte.
writeBytes("XYZ") overwrites the next 3 bytes.
Demonstrates how seek() enables in-place editing of file content.