删除球拍编程语言中的非空目录
问题描述:
如何删除球拍中的非空目录?删除球拍编程语言中的非空目录
当我调用这个API (删除目录DIR),其中dir是“/用户/苹果/库/ Application Support/AOI”。有人告诉我:exn found:#(struct:exn:fail:filesystem:errno delete-directory:无法删除目录 path:/ Users/apple/Library/Application Support/aoi 系统错误:Directory not empty; errno = 66#(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))
我错过了什么?
答
在许多操作系统中,删除目录的命令仅在目录为空时才起作用。例如。在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))
要非常小心,虽然在文件列表中的错误将不正是你问,你可能永远不会得到这些文件备份。
答
使用删除目录/文件:
(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))