ストリーム

定義済みストリームは次のものであり、 echo-streamとconcatenated-streamは利用できない。

*standard-input*
標準入力 stdin fd=0
*standard-output*
標準出力 stdout fd=1
*error-output*
標準エラー出力 stderr fd=2 bufsize=1
*terminal-io*
*standard-input**standard-output* で作られる入出力ストリーム



streamp object [関数]

objectstream, io-streamかそのサブクラスから 作られているときTを返す。


input-stream-p object [関数]
objectがストリームで読み込み可能であれば、Tを返す。


output-stream-p object [関数]
objectがストリームで書き込み可能であれば、Tを返す。


io-stream-p object [関数]
objectが読み書き可能なストリームであれば、Tを返す。



\begin{emtabbing}
{\bf open}
\it path \&key \= :direction :input \\lq  [関数]\\ ...
...\\
\> :permission \char93 o644 \\
\> :buffer-size 512\\
\rm
\end{emtabbing}

openは、pathで指定されたファイルと結合されるストリームを作る。 pathは、文字列かパス名でよい。 :directionは、:input, :outputまたは:ioのどれか 1つでなければならない。 いくつかのopenオプション:append, :new-version, :overwrite, :error とNILが:if-existsのパラメータとして許される。 しかしながら、このパラメータは:direction:inputのとき無視される。 :if-does-not-existには、 :error, :createかNILのどれか1つをとる。 :new-version, :rename:supersedeは認識されない。 デフォルトとして、:direction:output:ioでファイルが存在するとき、そのファイルに上書きする。 :inputにおいて、ファイルがないとき、エラーが報告される。 ファイルの存在を知るために、probe-fileを使うことができる。 :buffer-sizeのデフォルト値は512バイト、 :permissionのデフォルト値は#O644である。 SunOS4は、同時に60ファイルのオープンを許可している。


with-open-file (svar path . open-options) &rest forms [マクロ]

pathという名のファイルが、open-optionsでオープンされ、 そのストリームはsvarにバインドされる。 それからformsが評価される。 ストリームは、formsの評価が終るかまたは throw, return-fromやエラーで脱出したとき、自動的にクローズされる。 with-open-fileは、unwind-protectによってcloseとその内部書式を 一緒にして定義されるマクロである。


close stream [関数]

streamがクローズされ、成功したらTを返す。 streamが既にクローズされていた場合、NILが返される。 ストリームは、そのストリームオブジェクトが参照するものがないなら、GCによって 自動的にクローズされる。


make-string-input-stream string [関数]

stringから入力ストリームを作る。


make-string-output-stream size [関数]

size長さの文字列のために出力ストリームを作る。 その長さは自動的に拡張される。そのため、sizeは初期化時に配置する 文字列のための補助情報である。


get-output-stream-string string-stream [関数]

string-streamに文字列を出力する。


make-broadcast-stream &rest output-streams [関数]

広報(broadcast)ストリームを作り、このストリームに書かれたメッセージはすべての output-streamsへ転送される。


2016-04-05