Ruby 4.0 リファレンスマニュアル

instance method IO::Buffer#read

read(io, length = nil, offset = 0) -> IntegerRuby 3.1 から[permalink][rdoc][edit]

io から読み込んだ内容をバッファに書き込みます。

読み込むのは、少なくとも length バイトです。バッファに空きがあれば、それより多く読み込むことがあります。

読み込みは io の現在の位置から行われ、io の位置は読み込んだ分だけ進みます。

[PARAM] io:
読み込み元の IO を指定します。
[PARAM] length:
読み込む最小のバイト数を整数で指定します。省略するか nil を指定した場合は、バッファの大きさから offset を引いた値、つまりバッファの残り全体になります。 0 を指定した場合は read(2) をちょうど 1 回呼びます。
[PARAM] offset:
読み込んだ内容を書き込む位置を、バッファの先頭からのバイト数で指定します。
[RETURN]
読み込んだバイト数を返します。読み込みに失敗した場合は errno を負にした整数を返します。例外は発生しません。
[EXCEPTION] ArgumentError:
offset と length の合計がバッファの大きさを超える場合に発生します。
File.write("test.txt", "Hello World")

buf = IO::Buffer.new(11)
File.open("test.txt") do |io|
  p buf.read(io, 11) # => 11
end
p buf.get_string     # => "Hello World"
例: 読み込みに失敗した場合は -errno を返す
File.write("test.txt", "Hello World")

buf = IO::Buffer.new(4)
# 書き込み専用で開いたファイルからは読み込めない
File.open("test.txt", "w") do |io|
  p buf.read(io, 4)      # => -9
end
p(-Errno::EBADF::Errno)  # => -9

[SEE_ALSO] IO::Buffer#pread, IO::Buffer#write