【Ruby3.x】IO::sysread()メソッドの使い方
sysreadメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
sysreadメソッドは、IOクラスのインスタンスに対して、OSのシステムコールを直接利用してデータを読み込む低レベルなI/O操作を実行するメソッドです。このメソッドは、指定されたファイルディスクリプタから、指定されたバイト数のデータを読み込み、その結果を文字列として返します。
sysreadメソッドの主な特徴は、Rubyの内部的なバッファリングを介さずに、直接OSのread(2)システムコールなどを呼び出す点にあります。そのため、通常のreadメソッドのように、Rubyによってデータがキャッシュされたり、エンコーディング変換が自動的に行われたりすることはありません。読み込まれるデータは、純粋なバイト列としてそのまま扱われます。
引数として、読み込む最大バイト数を指定します。また、オプションで、読み込んだデータを格納するための文字列バッファを渡すことも可能です。このバッファが指定された場合、メソッドはそのバッファにデータを格納し、バッファを返します。
sysreadメソッドは、通常はIO#readメソッドを使用することが推奨されますが、非常に大きなファイルを効率的に処理する場合や、バイナリデータを直接扱うアプリケーション、またはOSとの低レベルなI/Oインタラクションが必要な場合に特に有用です。生のバイトデータを取得したいときや、厳密なパフォーマンス要件がある場面で利用を検討すると良いでしょう。
構文(syntax)
1file = File.open("data.bin", "r") 2buffer = file.sysread(100) # 最初の100バイトを読み込む 3file.close
引数(parameters)
maxlen, outbuf = nil
- maxlen: 読み取る最大バイト数を指定する整数
- outbuf = nil: 読み取ったデータを格納するバッファを指定するIOオブジェクト。指定しない場合は新規に作成される
戻り値(return)
String
IO#sysread は、指定されたバイト数または EOF に達するまで、ファイルやパイプから生のバイナリデータを読み込み、それを文字列として返します。