iOS缓存功能
2024-08-26 03:13:04
之前做缓存,没有考虑过这个具体的实现。
移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。
但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。
今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、删除缓存文件的实现。
获取缓存文件的大小
由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。
计算单个文件大小
+(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 ;
}
计算目录大小
+(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 +=[FileService fileSizeAtPath:absolutePath];
}
//SDWebImage框架自身计算缓存的实现
folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
return folderSize;
}
return ;
}
清理缓存文件
直接用SDWebImage框架,它自己实现了清理缓存操作,我们可以直接调用。
+(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];
}
最新文章
- 正则表达式在python中的应用
- Discuz! X upgrade/converter GETSHELL Vulnerability Via /convert/include/global.func.php Inject Special Symbol Into /convert/data/config.inc.php
- C#设计模式(7)——适配器模式(Adapter Pattern)
- QFile文件操作-QT
- DOM 表单应用
- CentOS 6.5下Git服务器搭建
- DP——最优三角形剖分
- CSS2简写代码(优化)
- 使用bootstrap响应式布局——手机屏幕中横向滚动显示标签页选项
- ASP.NET Excel导入Sql Server数据库(转)
- move_uploaded_file
- idea+maven下jrebel的安装破解
- 安装和强行卸载fuse
- Shell命令 中|| &;&;使用
- EOS开发基础之六:使用cleos命令行客户端操作EOS——智能合约之eosio.msig和eosio.system
- HTTP ERROR 400 Bad Request
- MySQL查询当天、本周,本月,上一个月的数据
- 通过Java发送邮件和接收邮件的工具类
- CentOS7安装步骤详解
- php7 扩展模块添加