如何使用重命名文件在 Lisp 中移动文件

joh*_*ies 3 lisp common-lisp pathname

在 Lisp 中以独立于实现的方式移动文件的最佳方法是什么?例如我有一个图像文件:

(setq oldpath #P"SERVER:PICTURES;TEMP;PHOTO.PNG")
Run Code Online (Sandbox Code Playgroud)

我想将它从 TEMP 目录移到 PICTURES 目录中。这似乎有效:

(setq newpath
  (make-pathname 
    :host (pathname-host oldpath) 
    :directory (butlast (pathname-directory oldpath)) 
    :name (pathname-name oldpath)
    :type (pathname-type oldpath)))

(rename-file oldpath newpath)
Run Code Online (Sandbox Code Playgroud)

但有更优雅的方式吗?

谢谢,大卫

Rai*_*wig 6

我通常使用:

(make-pathname :defaults old-path
               :directory (butlast (pathname-directory oldpath)))
Run Code Online (Sandbox Code Playgroud)

:defaults参数确保旧路径名的所有相关部分都被复制。