2016-08-22 1 views
0

Я пытаюсь удалить файлы в моем каталоге кеша. Однако, когда я пытался удалить отдельные папки, у меня появилась ошибка, говорящая, что файл не существует, хотя я знаю, что это так. Итак, я попытался использовать цикл for для удаления всех файлов в каталоге кэшей.NSFileManager: пытается удалить файлы, но он говорит, что их не существует

do { 
     for file in try NSFileManager.defaultManager().contentsOfDirectoryAtPath(cacheFolderPath) where !file.hasPrefix("."){ 
      try NSFileManager.defaultManager().removeItemAtPath(file) 
     } 
     print("Cache cleared successfully.") 
    } 
    catch let error as NSError { 
     print(error.localizedDescription) 
     if let reason = error.localizedFailureReason { 
      print(reason) 
     } 
    } 
} 

Однако этот код печатает это:

"CategoryThumbnails" не может быть удален.
Файл не существует.

Ну, это, очевидно, существует, поскольку оно было обнаружено методом contentsOfDirectoryAtPath! Как этого не может быть? Кто-нибудь знает, что здесь происходит, и как я могу очистить кеш?

ответ

3

Результаты contentsOfDirectoryAtPath - это список файлов в данной папке. Но каждый из этих результатов не является полным путем.

Чтобы удалить каждый file, вам необходимо добавить file в cacheFolderPath. Затем передайте этот полный путь до removeItemAtPath.

Другим решением является использование одного из других методов перечисления в папке NSFileManager, которые возвращают полные URL-адреса и позволяют предоставлять параметры для пропуска скрытых файлов.

Смежные вопросы