class

IO::MultiWriter

Inherits IO / Reference / Object

An IO which writes to a number of underlying writer IOs.

io1 = IO::Memory.new
io2 = IO::Memory.new
writer = IO::MultiWriter.new(io1, io2)
writer.puts "foo bar"
io1.to_s # => "foo bar\n"
io2.to_s # => "foo bar\n"

Constructors

new(writers : Array(IO), sync_close : Bool = false)

Creates a new IO::MultiWriter which writes to writers. If sync_close is set, calling #close calls #close on all underlying writers.

Source
new(*writers : IO, sync_close : Bool = false)

Creates a new IO::MultiWriter which writes to writers. If sync_close is set, calling #close calls #close on all underlying writers.

Source

Instance methods

close

Closes this IO.

IO defines this is a no-op method, but including types may override.

Source
closed?

Returns true if this IO is closed.

IO defines returns false, but including types may override.

Source
flush

Flushes buffered data, if any.

IO defines this is a no-op method, but including types may override.

Source
read(slice : Bytes) : NoReturn

Reads at most slice.size bytes from this IO into slice. Returns the number of bytes read, which is 0 if and only if there is no more data to read (so checking for 0 is the way to detect end of file).

io = IO::Memory.new "hello"
slice = Bytes.new(4)
io.read(slice) # => 4
slice          # => Bytes[104, 101, 108, 108]
io.read(slice) # => 1
slice          # => Bytes[111, 101, 108, 108]
io.read(slice) # => 0
Source
sync_close=(sync_close : Bool)

If #sync_close? is true, closing this IO will close all of the underlying IOs.

Source
sync_close?

If #sync_close? is true, closing this IO will close all of the underlying IOs.

Source
write(slice : Bytes) : Nil

Writes the contents of slice into this IO.

io = IO::Memory.new
slice = Bytes.new(4) { |i| ('a'.ord + i).to_u8 }
io.write(slice)
io.to_s # => "abcd"
Source