2012-11-26 109 views
1

版本输出:如何在clisp 2.33中创建目录?

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-目录,但并不在此版本中运行。

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

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

回答

3

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

(ensure-directories-exist "foo/") 

它也可以创建一个整个目录结构为您提供:

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

注意,在最后的斜杠是重要的,它没有它就无法工作。

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

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

'确保目录存在'工作得很好,谢谢! – mentics

+0

最后一个斜杠使MAKE-PATHNAME认为你指定了一个目录(否则它倾向于将最后一个组件解释为文件名)。 – Vatine

0

很奇怪你没有EXT:MAKE-DIRETORY。 2004年是“老”,但在CLISP方面还不算旧,EXT:MAKE-DIRECTORY是非常基本的功能。也许这个CLISP是由于一些奇怪的原因而专门建造的。

另一种解决方案是调用命令行(EXT:SHELL和friends),但是如果你没有EXT:MAKE-DIRECTORY,也许你不会有这些。此外,这将更依赖于平台(使得这些命令与平台相关),并且不太完整。但是这是可能的(假设它们也存在)。

是否有升级CLISP的可能性?