Ruby - File Pointer Seeking

Introduction

To move the pointer forward by a certain offset or move the pointer to a certain position backward from the end of the file, you need to use seek.

seek has three modes of operation:

Mode
Description
IO::SEEK_CUR
Seeks a certain number of bytes ahead of the current position.
IO::SEEK_END

Seeks to a position based on the end of the file.
This means that to seek to a certain position from the end of the file.
IO::SEEK_SET
Seeks to an absolute position in the file. This is identical to pos=.

To position the file pointer 5 bytes from the end of the file and change the character to an X , you would use seek as follows:

Demo

f = File.new("test.txt", "r+") 
f.seek(-5, IO::SEEK_END) # w  ww .ja va2 s. co  m
f.putc "X" 
f.close

The following code prints every fifth character in a file:

Demo

f = File.new("test.txt", "r") 
while a = f.getc 
  puts a.chr #  w  w  w.j ava2  s . co m
  f.seek(5, IO::SEEK_CUR) 
end

Result

Related Topic