我试图删除缓存目录中的文件。但是,当我尝试删除单个文件夹时,我收到一个错误,说该文件不存在,即使我知道它也存在。所以,我尝试使用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
方法发现了它!它怎么可能不存在?有没有人知道这里发生了什么,以及如何清除缓存?
答案 0 :(得分:3)
contentsOfDirectoryAtPath
的结果是给定文件夹中的文件列表。但是这些结果中的每一个都不是一条完整的道路。
要删除每个file
,您需要将file
附加到cacheFolderPath
。然后将完整路径传递给removeItemAtPath
。
另一个解决方案是使用NSFileManager
的其他文件夹枚举方法之一返回完整的网址,并让您提供跳过隐藏文件的选项。