2017-06-16 6 views
1

Comment supprimer un répertoire non vide dans Racket?Supprimer un répertoire non vide dans le langage de programmation Racket

Quand je prévalue de cette api (delete-répertoire dir), dans lequel le répertoire est "/ Users/Apple/Bibliothèque/Application Support/aoi". On m'a dit que: exn trouvé: # (struct: exn: échouer: système de fichiers: errno supprimer-répertoire: impossible de supprimer le répertoire chemin:/Users/apple/Bibliothèque/Application Support/aoi erreur système: répertoire non vide; = 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)) 

Ai-je raté quelque chose?

Répondre

3

Comme dans de nombreux systèmes d'exploitation, la commande de suppression d'un répertoire ne fonctionne que si le répertoire est vide. Par exemple. dans GNU

# rmdir dir 
rmdir: failed to remove 'dir/': Directory not empty 

Généralement, un effacement récursif est nécessaire:

# rm -r dir 
# 

Dans #lang racket vous avez la fonction delete-directory/files qui supprime de manière récursive. Il suffit de remplacer delete-directory avec delete-directory/files ferait ce que vous voulez:

(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)) 

Soyez très prudent si un bogue dans la liste des fichiers fera exactement comme vous avez demandé et vous ne pouvez jamais obtenir ces fichiers en arrière.

0

utilisation delete-répertoire/fichiers:

(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))