基于Swift3.0/OC的缓存清理功能的实现
来源:互联网 发布:ubuntu下配置lnmp 编辑:程序博客网 时间:2024/05/17 03:07
最近在写学习Swift ,用到了清除缓存功能,把它封装成了两个方法,下面是具体实现
//计算目录下缓存大小,并将计算的结果返回func fileSizeOfCache() -> Int { let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first // 取出文件夹下所有文件数组 let fileArr = FileManager.default.subpaths(atPath: cachePath!) //快速枚举出所有文件名 计算文件大小 var size = 0 for file in fileArr! { // 把文件名拼接到路径中 //let path = cachePath?.stringByAppendingString("/\(file)") 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 cacheSize = size / 1024 / 1024 //let str = "\(mm)"+"MB" return cacheSize}
删除缓存
//清除缓存func clearCache() -> Void { // 取出cache文件夹目录 缓存文件都在这个目录下 let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first // 取出文件夹下所有文件数组 let fileArr = FileManager.default.subpaths(atPath: cachePath!) // 遍历删除 for file in fileArr! { let path = cachePath?.appending("/\(file)") if FileManager.default.fileExists(atPath: path!) { do { try FileManager.default.removeItem(atPath: path!) } catch { } } }}
基于OC的缓存清理,运用SDWebImage框架
//计算单个文件大小+(float)fileSizeAtPath:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; if([fileManager fileExistsAtPath:path]){ long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize; return size/1024.0/1024.0; } return 0;}//计算目录大小+(float)folderSizeAtPath:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; float folderSize; if ([fileManager fileExistsAtPath:path]) { NSArray *childerFiles=[fileManager subpathsAtPath:path]; for (NSString *fileName in childerFiles) { NSString *absolutePath=[path stringByAppendingPathComponent:fileName]; folderSize +=[CacheDelete fileSizeAtPath:absolutePath]; } //SDWebImage框架自身计算缓存的实现 folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0; return folderSize; } return 0;}//清理缓存文件+(void)clearCache:(NSString *)path{ NSFileManager *fileManager=[NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:path]) { NSArray *childerFiles=[fileManager subpathsAtPath:path]; for (NSString *fileName in childerFiles) { //如有需要,加入条件,过滤掉不想删除的文件 NSString *absolutePath=[path stringByAppendingPathComponent:fileName]; [fileManager removeItemAtPath:absolutePath error:nil]; } } [[SDImageCache sharedImageCache] cleanDisk];}
0 0
- 基于Swift3.0/OC的缓存清理功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发 清理缓存功能的实现
- 如何实现手机缓存清理的功能
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- Swift和OC的区别(基于Swift3.0)
- Swift和OC的区别(基于Swift3.0)
- iOS开发通过NSURLProtocol实现UIWebView的离线缓存(离线加载),OC版和Swift3.0版
- Android清理缓存功能实现
- swift3.0 签名的实现
- Straight Insert Sort
- C#封装MongoDb.Driver 实现EF操作SqlServer模式
- GROUP BY 与ORDER BY 与 limit 综合用法
- Shell Sort
- 【工作笔记】浏览器后退响应及关于input标签的一些说明
- 基于Swift3.0/OC的缓存清理功能的实现
- ubuntu添加vlan和路由追踪
- 背包问题动态规划算法java实现及分析
- 使用构造函数直接赋值与使用初始化列表的不同
- adb pull出现 Permission denied
- android:DDMS查看Threads
- 303. Range Sum Query - Immutable
- C++的STL库,vector sort排序时间复杂度 及常见容器比较
- hector mapping建图并保存