Common Lisp - 如果路径名指向常规文件或目录怎么说?

时间:2010-09-17 01:47:54

标签: common-lisp

是否可以“统计”文件并找到其文件类型 - 常规或目录?

4 个答案:

答案 0 :(得分:4)

阅读Peter Seibel的portable pathname library书中关于Practical Common Lisp的章节。它是免费提供的。它有一个函数file-exists-p,它将在文件存在时返回路径名,如果不存在则返回nil。如果返回的路径名是目录,则它将以目录形式存在。他还提供了另一个函数来检查路径名是否确实是目录形式。

顺便说一句,整本书真的值得一读,所以如果你还没有,请查看。

答案 1 :(得分:2)

我认为有几种方法。 probe-file然后检查返回的真实名称以确定它有一个目录名但不是文件名和类型应该这样做。例如对于目录

(pathname-name (probe-file filespec))

-> NIL

答案 2 :(得分:1)

CL-FAD有一个函数DIRECTORY-EXISTS-P,当与PATHNAME-AS-DIRECTORY结合使用时,会规范化路径名(在传递字符串时防止失败,例如“/ path / dir-without-trailing-slash “)并且满足你的要求。

(CL-FAD:DIRECTORY-PATHNAME-P(CL-FAD:PATHNAME-AS-DIRECTORY(PROBE-FILE“/ path / missing-slash”)))

答案 3 :(得分:0)

CLISP有一个函数EXT:PROBE-DIRECTORY,它告诉你文件是否存在并且是一个目录。

请注意,此功能特定于CLISP而非标准通用列表。