The IO::Like module provides the methods of an IO object based upon on a few
simple methods provided by the including class: unbuffered_read,
unbuffered_write, and unbuffered_seek.

These methods provide the underlying read, write, and seek support
respectively, and only the method or methods necessary to the correct
operation of the IO aspects of the including class need to be provided.

Missing functionality will cause the resulting object to appear read-only,
write-only, and/or unseekable depending on which underlying methods are
absent.

Additionally, read and write operations which are buffered in IO are buffered
with independently configurable buffer sizes.  Duplexed objects (those with
separate read and write streams) are also supported.

Homepage:
http://io-like.rubyforge.org/
