2012-11-26 80 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的可能性?