(rontolisp) docs
← 関数

open

(open filename &optional direction element-type)

ファイルを開いてストリームを返します。省略可能な direction はリテラルのキーワード :input(デフォルト。読み込み用に開く)または :output(作成または切り詰めて書き込み用に開く)でなければなりません。コンパイラがファイルモードを静的に決定できるよう、これはリテラルである必要があります。省略可能な element type(これもリテラル)はストリームの種類を選択します。'character(デフォルト)は read/read-line/write-line 用のテキストストリームを、'(unsigned-byte 8)read-byte/write-byte/read-sequence/write-sequence 用のバイナリストリームを開きます。返されるストリームは不透明なハンドル(インタプリタ/JVM ではストリームテーブルへのインデックス、WASM では WASI ファイルディスクリプタ)で、その実行内でのみ有効です。対応する読み書き関数に渡したうえで close してください。WASM ではパスは最初の preopen ディレクトリを基準に解決されるため、--dir を付けて実行してください。ストリームを自動的にクローズする with-open-file の利用を推奨します。

(let ((s (open "data.txt")))
  (print (read-line s))
  (close s))

これは data.txt を入力用に開き、最初の行を読み込み、ストリームをクローズします。代わりに :output を渡すと、書き込み用にファイルを作成または切り詰めます。(open "data.bin" :input '(unsigned-byte 8)) は同じ種類のハンドルをバイナリモードで開きます。