*** 清空缓存
//清除 Library/Caches func clearCaches(){ do { try deleteLibraryFolderContents(folder: "Caches") //print("clear done") } catch { //print("clear Caches Error") } } // private func deleteLibraryFolderContents(folder: String) throws { let manager = FileManager.default let library = manager.urls(for: FileManager.SearchPathDirectory.libraryDirectory, in: .userDomainMask)[0] let dir = library.appendingPathComponent(folder) let contents = try manager.contentsOfDirectory(atPath: dir.path) for content in contents { //如果是快照就继续 if(content == "Snapshots"){continue;} do { try manager.removeItem(at: dir.appendingPathComponent(content)) //print("remove cache success:"+content) } catch where ((error as NSError).userInfo[NSUnderlyingErrorKey] as? NSError)?.code == Int(EPERM) { //print("remove cache error:"+content) // "EPERM: operation is not permitted". We ignore this. #if DEBUG //print("Couldn't delete some library contents.") #endif } } }
** 统计缓存大小
var fileSize:Int = 0; override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(false) UIView.animate(withDuration: 0.3, animations: {() -> Void in self.v.frame.origin.y = 0; }){(finished) -> Void in DispatchQueue.global().async { self.fileSize = self.fileSizeOfCache(); //获取数据异步 DispatchQueue.main.async { //修改主线程UI self.clearLable.text = "已用 "+String(self.fileSize)+" MB"; } } } }
扫描二维码关注公众号,回复:
210922 查看本文章
//获取缓存大小 func fileSizeOfCache()-> Int { // 取出cache文件夹目录 缓存文件都在这个目录下 let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first //缓存目录路径 //print(cachePath) // 取出文件夹下所有文件数组 let fileArr = FileManager.default.subpaths(atPath: cachePath!) //快速枚举出所有文件名 计算文件大小 var size = 0 for file in fileArr! { // 把文件名拼接到路径中 let path = cachePath?.appending("/\(file)") // 取出文件属性 let floder = try! FileManager.default.attributesOfItem(atPath: path!) // 用元组取出文件大小属性 for (abc, bcd) in floder { // 累加文件大小 if abc == FileAttributeKey.size { size += (bcd as AnyObject).integerValue } } } let mm = size / 1024 / 1024 return mm }