如何在clisp 2.33中创建目录?

时间:2012-11-26 17:29:41

标签: common-lisp clisp

版本输出为:

GNU CLISP 2.33 (2004-03-17) (built 2004-05-24 16:21:45)
Software: GNU C 3.3.1 (cygming special) ANSI C program
Features: (CLISP ANSI-CL COMMON-LISP LISP=CL INTERPRETER SOCKETS GENERIC-STREAMS
LOGICAL-PATHNAMES SCREEN FFI UNICODE BASE-CHAR=CHARACTER PC386 WIN32)

搜索会显示EXT:MAKE-DIRECTORY,但这不适用于此版本。

我知道这是一个相当古老的版本,但这是我现在所拥有的,我在尝试使用最新版本时遇到了其他问题。

我想要为完整路径创建所有目录的东西,但即使只是能够创建一个目录也是有用的。

3 个答案:

答案 0 :(得分:3)

在当前工作目录中创建目录foo

(ensure-directories-exist "foo/")

它还可以为您创建整个目录结构:

(ensure-directories-exist "/tmp/lisp/rulez/")

注意,最后的斜线很重要,没有它就无法工作。

另一件事是您可能没有正确使用EXT:MAKE_DIRECTORY。如果你只是传递一个带有目录名的字符串,那么它将无法工作。你需要像这样使用它:

 (ext:make-directory (make-pathname :directory '(:relative "foobar")))

答案 1 :(得分:1)

CLISP 2.44 (2008-02-02)EXT:MAKE-DIR重命名为EXT:MAKE-DIRECTORY

使用ENSURE-DIRECTORIES-EXISTEXT:MAKE-DIR

答案 2 :(得分:0)

很奇怪你没有EXT:MAKE-DIRETORY。 2004年是“老”,但就CLISP而言,它并不是那么老,EXT:MAKE-DIRECTORY是非常基本的功能。也许这个CLISP是出于某种奇怪的原因专门建造的。

另一个解决方案是调用命令行(EXT:SHELL和朋友),但是如果你没有EXT:MAKE-DIRECTORY,也许你也不会有这些。此外,这将更依赖于平台(因此命令是平台相关的),并且不是很好地集成。但它有可能(假设它们也存在)。

是否有可能升级CLISP?