(rontolisp) docs
← 関数

file-length

(file-length stream)

ファイルストリームが開いているファイルのバイト長を返します。判定できない場合は nil を返します。それ以外のストリームはすべて nil を返します。文字列ストリーム、ソケット、標準ストリーム、そしてすでにクローズされたハンドルが該当します。出力ストリームは先にフラッシュされるので、ディスクに届いた分ではなく書き込まれた分を数えます。

2つのWASMバックエンドは、ファイルストリームであっても常に nil を返します。そこではWASIの filestat 呼び出しをインポートしていないためです。nil はまさにCommon Lispが定める「長さを判定できない」場合の答えなので、移植性のある呼び出し側は失敗せずに長さ不明のフォールバックを通ります。インタプリタとJVMは実際の値を返します。

(with-open-file (in "data.txt")
  (print (file-length in)))