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

【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 を返します。

関連コンテンツ

関連プログラミング言語