A stream, whether a character stream or a binary stream,
can be an input
stream
(source of data),
an output
stream
(sink for data),
both,
or (e.g., when ":direction :probe" is given to open) neither.
Figure 21–2 shows operators relating to input streams.
| clear-input | read-byte | read-from-string |
| listen | read-char | read-line |
| peek-char | read-char-no-hang | read-preserving-whitespace |
| read | read-delimited-list | unread-char |
Figure 21–3 shows operators relating to output streams.
| clear-output | prin1 | write |
| finish-output | prin1-to-string | write-byte |
| force-output | princ | write-char |
| format | princ-to-string | write-line |
| fresh-line | write-string | |
| pprint | terpri | write-to-string |
A stream that is both an input stream and an output stream is called a bidirectional stream . See the functions input-stream-p and output-stream-p.
Any of the operators listed in Figure~21–2 or Figure~21–3 can be used with bidirectional streams. In addition, Figure 21–4 shows a list of operators that relate specificaly to bidirectional streams.
| y-or-n-p | yes-or-no-p |