ファイルが存在するかどうかを判定する


与えられたパスネームが存在するかどうかを判定するためにはprobe-fileが利用できます。 probe-fileは引数で当たれられたパスネームが実際に存在するかどうかを返します。

ただし、この関数は そのパスネームが ディレクトリを指しているか ファイルを指しているかを無視します。そのパスネームがディレクトリかファイルかを知る必要がある場合は ディレクトリが存在するかどうかを判定するも参照してください。

;; /tmp はディレクトリ
;; /tm/ はシステムに存在しておらず、passwdはファイルとする
(probe-file #P"/tmp/passwd")
;=> #P"/tmp/passwd"

(probe-file #P"/tmp")
;=> #P"/tmp/"

(probe-file #P"/tm")
;=> NIL

この記事を書いた本人はprobe-fileの 戻り値をpathname-nameに放り込むことで判定していますが、何からの状況で上手くいかないかもしれません。