【Ruby3.x】StringIO::seek()メソッドの使い方
seekメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
seekメソッドは、StringIOオブジェクトが内部に保持している文字列データに対する読み書きの現在位置を変更するメソッドです。StringIOオブジェクトは、ディスク上のファイルのように振る舞いますが、実際にはメモリ上で文字列データを扱います。このメソッドを使用することで、そのメモリ上の文字列データのどの位置から読み書きを開始するかという「カーソル」の位置を自由に設定できます。
このメソッドは通常、offsetとwhenceという二つの引数を取ります。offsetは移動したいバイト数を指定し、whenceはそのoffsetをどの位置から数えるかの基準を指定するための定数です。
whenceには主に三つの基準があります。IO::SEEK_SETを指定すると、文字列データの先頭からoffsetバイト分だけ位置を移動します。IO::SEEK_CURを指定すると、現在の読み書き位置からoffsetバイト分だけ移動します。IO::SEEK_ENDを指定すると、文字列データの末尾を基準にoffsetバイト分だけ移動します。例えば、末尾から10バイト前に移動したい場合は、offsetに負の値を指定することになります。
文字列データの特定の場所から読み込みを再開したい場合や、既存のデータの一部を上書きしたい場合など、ファイル操作におけるseekと同様の制御をメモリ上の文字列データに対して行いたいときに、このseekメソッドが非常に有用です。メソッドが正常に実行されると、0を返します。
構文(syntax)
1require 'stringio' 2 3io = StringIO.new("hello world") 4io.seek(6, IO::SEEK_SET)
引数(parameters)
offset, whence = IO::SEEK_SET
- offset: Integer: 移動させたいバイト数を指定します。
- whence = IO::SEEK_SET: Integer: ファイルポインタの基準位置を指定します。デフォルトは
IO::SEEK_SET(ファイルの先頭)です。
戻り値(return)
self
StringIO オブジェクト自身が返されます。