在Racket编程语言中删除非空目录
如何删除Racket中的非空目录 当我调用这个api在Racket编程语言中删除非空目录,racket,Racket,如何删除Racket中的非空目录 当我调用这个api(delete directory),其中dir是“/Users/apple/Library/Application Support/aoi”,我被告知: exn found:#(struct:exn:fail:filesystem:errno delete-directory: cannot delete directory path: /Users/apple/Library/Application Support/aoi syst
(delete directory)
,其中dir
是“/Users/apple/Library/Application Support/aoi”
,我被告知:
exn found:#(struct:exn:fail:filesystem:errno delete-directory: cannot delete directory
path: /Users/apple/Library/Application Support/aoi
system error: Directory not empty; errno=66 #<continuation-mark-set> (66 . posix))
我遗漏了什么吗?在许多操作系统中,只有当目录为空时,删除目录的命令才起作用。例如,在GNU中
# rmdir dir
rmdir: failed to remove 'dir/': Directory not empty
通常需要递归删除:
# rm -r dir
#
在#lang racket
中,您具有递归删除的功能。只需将delete directory
替换为delete directory/files
即可:
(定义lib文件夹“(“/Users/apple/Library/Application Support/aoi”))
(定义(dellib文件夹)
(对于每个(λ(p)
(printf“del lib文件夹:~a~n”p)
(如果(目录存在?p)
(删除目录/文件p)
(printf“文件夹不存在:~a~n”p)))
库文件夹)
但是要非常小心,因为文件列表中的错误将完全按照您的要求执行,并且您可能永远无法取回这些文件。使用删除目录/文件:
(define lib-folder '("/Users/apple/Library/Application Support/aoi"))
(define (del-lib-folder)
(for-each (λ (p)
(printf "del lib folder:~a~n" p)
(delete-directory/files #:must-exist? #f p))
lib-folder))
(define lib-folder '("/Users/apple/Library/Application Support/aoi"))
(define (del-lib-folder)
(for-each (λ (p)
(printf "del lib folder:~a~n" p)
(delete-directory/files #:must-exist? #f p))
lib-folder))