probe-file
(probe-file pathname)
ファイルが存在するかどうかを答えます。存在すればそのパス名を、存在しなければ nil を返します。これは何も開かずにこの問いに答える唯一のファイル操作であり、存在しないパスで失敗しない唯一の操作でもあります。open(したがって with-open-file)はどのバックエンドでもエラーを通知します。そのエラーを捕捉する方法も使えますが、より重くなります。handler-case は WASM バックエンドを例外モードにし、--no-gc は捕捉自体を拒否するため、素直な検査のほうが可搬な綴りです。4 つすべてのバックエンドで動作します。truename はこの関数の通知する版です。
成功時に返される「真名 (truename)」は、引数の名前文字列を保持するパス名です。どのバックエンドもシンボリックリンクを解決したり、パスを絶対パスにしたりはしません。引数はパス名と名前文字列のどちらの綴りでも受け付けます。パスの解釈は open と同じで、インタプリタと JVM ではプロセスの作業ディレクトリ基準、WASM ではプリオープンされたディレクトリ基準です(相対パスは最初の 1 つ、絶対パスは名前がそのパスの最長の接頭辞になるプリオープンディレクトリ。--dir を付けて実行してください)。ディレクトリも存在するものとして扱われます。uiop:file-exists-p は同じ操作の ASDF/UIOP 側の名前です。
(if (probe-file "config.lisp")
(load "config.lisp")
(print "no config"))
ここではファイルが存在する場合にのみ読み込みます。probe-file がなければ、ファイルが無い場合は else 側に進むのではなくプログラムが異常終了してしまいます。