【Ruby3.x】IO::pread()メソッドの使い方
preadメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
preadメソッドは、RubyのIOクラスに属し、ファイル内の指定されたオフセットから、指定された長さのデータを読み込むためのメソッドです。このメソッドの最大の特徴は、読み込み操作を行った後も、呼び出し元のIOオブジェクトの現在のファイルポインタ(読み書き位置)を移動させない点にあります。
利用する際は、読み込む最大バイト数を表すmaxlenと、読み込みを開始するファイルのオフセット位置を表すoffsetを引数として指定します。成功すると、読み込んだデータを文字列として返します。ファイルの終端に達し、何も読み込めなかった場合はnilを返します。
preadメソッドは、特に複数のスレッドやプロセスが同時に同じファイルから読み込みを行う必要がある場合に非常に有用です。通常のreadメソッドのようにファイルポインタが移動しないため、ファイルポインタの競合を心配することなく、それぞれが独立して特定の範囲のデータを安全に読み込むことができます。例えば、データベースファイルのように構造化されたデータの中から、特定のレコードやブロックを効率的に、かつ並行処理で抽出する際に役立ちます。現在のファイルポインタの位置に影響を与えることなく、ファイル内の特定の位置からデータを安全かつ効率的に読み込みたい場合に最適なメソッドです。
構文(syntax)
1file = File.open("binary_data.dat", "r") 2content = file.pread(byte_length, offset_position) # ファイルのオフセット位置から指定バイト数を読み込む 3file.close
引数(parameters)
maxlen, offset, options = nil
- maxlen: 読み込む最大バイト数を指定する整数
- offset: ファイルの先頭から読み込みを開始する位置を指定する整数
- options = nil: 読み込みオプションを指定するハッシュまたはnil
戻り値(return)
String または nil
指定されたバイト数だけファイルから読み込んだ文字列を返します。読み込みに失敗した場合は nil を返します。