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.
The next figure shows operators relating to input streams.
Figure 21-2. 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
The next figure shows operators relating to output streams.
Figure 21-3. 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 print 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 an be used with bidirectional streams. In addition, the next figure hows a list of operators that relate specificaly to bidirectional streams.
y-or-n-p yes-or-no-p
Figure 21-4. Operators relating to Bidirectional Streams.