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

【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 に達するまで、ファイルやパイプから生のバイナリデータを読み込み、それを文字列として返します。

関連コンテンツ

関連プログラミング言語