博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发-清理缓存功能的实现
阅读量:4954 次
发布时间:2019-06-12

本文共 1812 字,大约阅读时间需要 6 分钟。

本文转载至  http://www.open-open.com/lib/view/open1425625126743.html

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。

但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。

今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、删除缓存文件的实现。

获取缓存文件的大小

由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。

计算单个文件大小

1
2
3
4
5
6
7
8
<strong>+(
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;
}</strong>

 

 

计算目录大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<strong>+(
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
0;
}</strong>

 

 

清理缓存文件

同样也是利用NSFileManager API进行文件操作,SDWebImage框架自己实现了清理缓存操作,我们可以直接调用。

1
2
3
4
5
6
7
8
9
10
11
12
+(
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];
}

 

 

实现效果:

 

来自:http://www.cnblogs.com/mantgh/p/4317855.html

转载于:https://www.cnblogs.com/Camier-myNiuer/p/4959586.html

你可能感兴趣的文章
手机钉钉不支持js的append
查看>>
Linux内核调用I2C驱动_驱动嵌套驱动方法
查看>>
LeetCode 179. Largest Number
查看>>
android应用签名详解
查看>>
JSONObject
查看>>
BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草(动态规划)
查看>>
此为水印图片的载入程序
查看>>
常见加入收藏的写法
查看>>
jquery获取iframe中的dom对象
查看>>
会考试与会写论文是两码事
查看>>
java中将一个文件夹下所有的文件压缩成一个文件
查看>>
Linux临时和永久关闭selinux
查看>>
对待事情应该有的态度!!!
查看>>
如何开放 Azure 虚拟机 Ping 功能
查看>>
[SQL Server] 服务启动帐户
查看>>
PyQt5-对话框控件使用(QFileDialog)
查看>>
fastjson的json字符串转List
查看>>
webpack4+node合并资源请求, 实现combo功能(二十三)
查看>>
3 -11 文件的修改和保存
查看>>
Java类与对象
查看>>