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

instance method IO::Buffer#pwrite

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

バッファの内容を io の指定した位置に書き込みます。

IO::Buffer#write と異なり、書き込む位置を io の中で直接指定します。 io の現在の位置は変わりません。

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

buf = IO::Buffer.for("RUBY!")
File.open("test.txt", "r+") do |io|
  p buf.pwrite(io, 6, 5) # => 5
end
p File.read("test.txt")  # => "Hello RUBY!"

[SEE_ALSO] IO::Buffer#write, IO::Buffer#pread, pwrite(2)