NSFileManager:试图删除文件,但它说它们不存在

时间:2016-08-22 02:20:01

标签: ios swift nsfilemanager foundation

我试图删除缓存目录中的文件。但是,当我尝试删除单个文件夹时,我收到一个错误,说该文件不存在,即使我知道它也存在。所以,我尝试使用for循环删除caches目录中的所有文件。

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方法发现了它!它怎么可能不存在?有没有人知道这里发生了什么,以及如何清除缓存?

1 个答案:

答案 0 :(得分:3)

contentsOfDirectoryAtPath的结果是给定文件夹中的文件列表。但是这些结果中的每一个都不是一条完整的道路。

要删除每个file,您需要将file附加到cacheFolderPath。然后将完整路径传递给removeItemAtPath

另一个解决方案是使用NSFileManager的其他文件夹枚举方法之一返回完整的网址,并让您提供跳过隐藏文件的选项。