【Ruby3.x】StringIO::pread()メソッドの使い方
preadメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
preadメソッドは、StringIOオブジェクトが内部に保持する文字列データから、指定された開始位置(オフセット)から指定された長さ(バイト数)のデータを読み込むメソッドです。StringIOは、メモリ上の文字列をファイルのように扱うためのクラスです。
このpreadメソッドの大きな特徴は、データを読み込んだ後も、StringIOオブジェクトの現在の読み込み位置(IOポインタ)を移動させない点です。通常のreadメソッドがデータを読み込むと、その分だけ読み込み位置が先に進みますが、preadメソッドは位置を変えません。これにより、他の読み込み操作に影響を与えることなく、いつでも文字列内の任意の場所から特定のデータを取得できます。
利用する際は、pread(length, offset)のように、読み込みたいデータのバイト数をlengthに、文字列の先頭からのオフセット位置をoffsetに指定します。オフセットは0から始まります。例えば、文字列の先頭から10バイト目から5バイトを読み込む場合はpread(5, 10)と指定します。
このメソッドは、読み取った文字列を返します。指定されたオフセットから十分なデータがない場合や、lengthが0の場合は空の文字列を返します。これにより、メモリ上のデータをファイルと同様に、柔軟かつ安全に操作することが可能です。
構文(syntax)
1require 'stringio' 2 3sio = StringIO.new("Example String Data") 4read_data = sio.pread(6, 8) # オフセット8から6文字読み込む
引数(parameters)
length, offset
- length: 読み込むバイト数を指定する整数
- offset: 読み込みを開始するオフセット位置(バイト単位)を指定する整数
戻り値(return)
String | nil
指定されたバイト数だけデータを読み込み、その内容を文字列として返します。読み込むデータがない場合は nil を返します。