Handbook
Glossary
Stream protocol
Factor handbook
»
Input and output
»
Streams
Prev:
Stream example
Next:
Default input and output streams
The stream protocol consists of a large number of generic words, many of which are optional.
Stream protocol words are rarely called directly, since code which only works with one stream at a time should be written to use
Default input and output streams
instead, wrapping I/O operations such as
read
and
write
in
with-input-stream
and
with-output-stream
.
All streams must implement the
dispose
word in addition to the stream protocol.
Binary and text streams
These words are required for binary and string input streams:
stream-read1
( stream -- elt )
stream-read-unsafe
( n buf stream -- count )
stream-read-until
( seps stream -- seq sep/f )
stream-read-partial-unsafe
( n buf stream -- count )
The
stream-read-unsafe
and
stream-read-partial-unsafe
words should be implemented by streams but not used by client code. The following safe words are provided for reading from input streams:
stream-read
( n stream -- seq/f )
stream-read-into
( buf stream -- buf-slice more? )
stream-read-partial
( n stream -- seq/f )
stream-read-partial-into
( buf stream -- buf-slice more? )
This word is only required for string input streams:
stream-readln
( stream -- str/f )
These words are required for binary and string output streams:
stream-flush
( stream -- )
stream-write1
( elt stream -- )
stream-write
( data stream -- )
This word is only required for string output streams:
stream-nl
( stream -- )
These words are for seekable streams:
stream-seekable?
( stream -- ? )
stream-tell
( stream -- n )
stream-seek
( n seek-type stream -- )
tell-input
( -- n )
tell-output
( -- n )
stream-length
( stream -- n/f )
See also
I/O timeout protocol