Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】IO::seek()メソッドの使い方

seekメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

seekメソッドは、IOオブジェクトが表すファイルの読み書き位置(ファイルポインタ)を移動するメソッドです。ファイルポインタとは、次にファイルからデータを読み込んだり書き込んだりする開始位置を示すもので、このメソッドを使用することで、ファイルの特定のバイト位置に移動し、そこからデータの読み書きを再開できます。

このメソッドは、第一引数に移動するバイト数を示す「オフセット」、第二引数にオフセットを計算する際の「基準点」を受け取ります。オフセットは、バイト単位で指定する整数値です。基準点には、IO::SEEK_SET、IO::SEEK_CUR、IO::SEEK_ENDのいずれかを指定します。IO::SEEK_SETを指定するとファイルの先頭からの絶対位置を、IO::SEEK_CURを指定すると現在のファイルポインタ位置からの相対位置を、IO::SEEK_ENDを指定するとファイルの末尾からの相対位置を基準としてオフセットが計算されます。例えば、ファイルの先頭から特定バイト数をスキップして読み始めたい場合や、現在の位置から前後に移動したい場合などに利用されます。

seekメソッドが正常に実行されると、通常は0が返されます。ファイルのポインタ位置を自由に制御できるため、大量のデータファイルから必要な部分だけを効率的に処理する際や、既存ファイルの一部を上書きする際などに非常に役立ちます。

構文(syntax)

1io_object.seek(offset, whence)

引数(parameters)

amount, whence = IO::SEEK_SET

  • amount: 読み取り/書き込み位置を移動させるバイト数。
  • whence = IO::SEEK_SET: 相対位置を指定するフラグ。IO::SEEK_SET (0) はファイルの先頭からの絶対位置、IO::SEEK_CUR (1) は現在の位置からの相対位置、IO::SEEK_END (2) はファイルの末尾からの相対位置を指定します。

戻り値(return)

IO

IOオブジェクト自身が返されます。これにより、メソッドチェーンで連続して操作を行うことができます。

関連コンテンツ

関連プログラミング言語