【Ruby3.x】StringIO::new()メソッドの使い方
newメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
newメソッドは、Rubyにおいて、メモリ上で文字列データをファイルのように扱えるStringIOオブジェクトを新しく生成するメソッドです。これは、実際のファイルシステム上のファイルを操作する代わりに、プログラムのメモリ空間内で一時的に文字列を読み書きしたい場合に非常に役立ちます。
このメソッドを呼び出すことで、まるでファイルを開くかのように、文字列の内容を読み込んだり、書き込んだり、ポインタを移動させたりといった操作が可能になります。StringIOオブジェクトは、Fileクラスのインスタンスが持つ多くのメソッド(read, write, gets, putsなど)をサポートしているため、既存のファイル操作ロジックをほとんど変更せずに利用できる利点があります。
基本的な使い方はいくつかあります。まず、StringIO.newと引数なしで呼び出すと、内容が空の新しいStringIOオブジェクトが作成されます。これに文字列を書き込んでいくことができます。次に、StringIO.new("初期文字列")のように文字列を引数に渡すと、その文字列を初期内容として持つStringIOオブジェクトが生成されます。このオブジェクトは、あたかもその文字列がファイルの内容であるかのように振る舞います。さらに、第二引数でモードを指定することも可能です。例えば、StringIO.new("初期文字列", "w+")とすると、読み書き可能なモードでオブジェクトを生成し、既存の文字列を上書きしたり、読み込んだりできます。
StringIOオブジェクトは、一時的なログの収集、テストデータとしての利用、ネットワークから受け取ったデータをファイルとして扱いたい場合など、ディスクI/Oを伴わずに文字列データを効率的に処理したい場面で頻繁に利用されます。
構文(syntax)
1require 'stringio' 2 3sio = StringIO.new("初期文字列")
引数(parameters)
string = "", mode = "r+"
- string: StringIOオブジェクトを初期化する際の文字列データ。デフォルトは空文字列です。
- mode: StringIOオブジェクトのモードを指定します。「r」(読み込み専用)、「w」(書き込み専用)、「a」(追記)、「r+」(読み書き両用)、「w+」(読み書き両用、既存の内容をクリア)、「a+」(読み書き両用、追記)などがあります。デフォルトは「r+」です。
戻り値(return)
StringIO
IOストリームとして扱えるStringIOオブジェクトを新しく生成します。