如何删除球拍中非空的目录?
当我调用这个(delete-directory dir)接口,其中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))对于上下文,这是我的代码的其余部分:
(define lib-folder '("/Users/apple/Library/Application Support/aoi"))
(define (del-lib-folder)
(for-each (λ (p)
(printf "del lib folder:~a~n" p)
(if (directory-exists? p)
(delete-directory p)
(printf "folder does not exist:~a~n" p)))
lib-folder))我错过了什么吗?
发布于 2017-06-16 20:25:51
与许多操作系统一样,删除目录的命令仅在目录为空的情况下有效。例如:在GNU中
# rmdir dir
rmdir: failed to remove 'dir/': Directory not empty通常需要递归删除:
# rm -r dir
#在#lang racket中,您有递归删除的函数delete-directory/files。只需用delete-directory/files替换delete-directory就可以做到您想要的:
(define lib-folder '("/Users/apple/Library/Application Support/aoi"))
(define (del-lib-folder)
(for-each (λ (p)
(printf "del lib folder:~a~n" p)
(if (directory-exists? p)
(delete-directory/files p)
(printf "folder does not exist:~a~n" p)))
lib-folder)) 但是要非常小心,因为文件列表中的错误将完全按照您的要求执行,并且您可能永远不会找回这些文件。
发布于 2017-06-17 11:57:03
使用delete-directory/files:
(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))https://stackoverflow.com/questions/44586860
复制相似问题