【Ruby3.x】StringIO::read()メソッドの使い方
readメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
readメソッドは、StringIOオブジェクトが保持する文字列データを読み込むために使用するメソッドです。StringIOは、メモリ上の文字列をあたかもファイルのように扱えるようにするためのクラスで、このreadメソッドはその内部データから指定された範囲の文字列を読み出します。
引数を指定しない場合、現在の読み込み位置からストリームの末尾までのすべてのデータを読み込み、その文字列を返します。データを読み込んだ後、読み込み位置は読み込んだデータの長さ分だけ進みます。
length(整数)を引数として与えると、現在の読み込み位置から指定されたバイト数のデータを読み込みます。もしストリームの末尾に達していて、指定されたバイト数分のデータがない場合は、残りのすべてのデータを読み込みます。
buffer(文字列オブジェクト)を第2引数として指定することも可能です。この場合、読み込んだデータは新しく文字列を生成するのではなく、指定されたbufferオブジェクトに格納されます。メソッドの戻り値もこのbufferオブジェクト自体になります。
もし、読み込み位置がすでにストリームの末尾にあり、それ以上読み込むデータがない場合には、nilが返されます。これにより、データの終端(EOF)を判断することができます。このメソッドは、ファイルの内容をメモリ上で一時的に操作する際などに非常に役立ちます。
構文(syntax)
1require 'stringio' 2 3sio = StringIO.new("Hello, Ruby!") 4 5# ストリームから最初の5バイトを読み込む 6first_part = sio.read(5) 7 8# 残りの内容をすべて読み込む 9remaining_part = sio.read
引数(parameters)
length = nil, out = nil
- length: 読み込むバイト数を指定します。nil の場合は、ストリームの終端まで全て読み込みます。
- out: 読み込んだデータを格納するIOオブジェクトを指定します。nil の場合は、新たに文字列として返されます。
戻り値(return)
String or nil
StringIO オブジェクトから読み込まれた文字列を返します。 読み込むデータがない場合は nil を返します。