pread(io, from, length = nil, offset = 0) -> IntegerRuby 3.1 から[permalink][rdoc][edit]-
io の指定した位置から読み込んだ内容をバッファに書き込みます。
IO::Buffer#read と異なり、読み込む位置を io の中で直接指定します。 io の現在の位置は変わりません。
- [PARAM]
io: - 読み込み元の IO を指定します。
- [PARAM]
from: - 読み込みを開始する位置を、io の先頭からのバイト数で指定します。
- [PARAM]
length: - 読み込む最小のバイト数を整数で指定します。省略するか nil を指定した場合は、バッファの大きさから offset を引いた値、つまりバッファの残り全体になります。 0 を指定した場合は pread(2) をちょうど 1 回呼びます。
- [PARAM]
offset: - 読み込んだ内容を書き込む位置を、バッファの先頭からのバイト数で指定します。
- [RETURN]
- 読み込んだバイト数を返します。読み込みに失敗した場合は errno を負にした整数を返します。例外は発生しません。
- [EXCEPTION]
ArgumentError: - offset と length の合計がバッファの大きさを超える場合に発生します。
File.write("test.txt", "Hello World") buf = IO::Buffer.new(5) File.open("test.txt") do |io| p buf.pread(io, 6, 5) # => 5 p io.pos # => 0 end p buf.get_string # => "World"[SEE_ALSO] IO::Buffer#read, IO::Buffer#pwrite, pread(2)
- [PARAM]