IOS 缓存文件的清除实现代码

2025-05-29 0 70

移动互联网APP 的应用开发,必须要时刻注意用户体验,以免造成APP 或者手机及其他移动设备的卡死情况,以下是对缓存文件的处理。

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

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

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

1. 获取缓存文件的大小

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39
-( float )readCacheSize

{

NSString *cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES) firstObject];

return [ self folderSizeAtPath :cachePath];

}

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

// 遍历文件夹获得文件夹大小,返回多少 M

- ( float ) folderSizeAtPath:( NSString *) folderPath{

NSFileManager * manager = [NSFileManager defaultManager];

if (![manager fileExistsAtPath :folderPath]) return 0 ;

NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator];

NSString * fileName;

long long folderSize = 0 ;

while ((fileName = [childFilesEnumerator nextObject]) != nil ){

//获取文件全路径

NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];

folderSize += [ self fileSizeAtPath :fileAbsolutePath];

}

return folderSize/( 1024.0 * 1024.0);

}

// 计算 单个文件的大小

- ( long long ) fileSizeAtPath:( NSString *) filePath{

NSFileManager * manager = [NSFileManager defaultManager];

if ([manager fileExistsAtPath :filePath]){

return [[manager attributesOfItemAtPath :filePath error : nil] fileSize];

}

return 0;

}

2. 清除缓存

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24
- (void)clearFile

{

NSString * cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES ) firstObject];

NSArray * files = [[NSFileManager defaultManager ] subpathsAtPath :cachePath];

//NSLog ( @"cachpath = %@" , cachePath);

for ( NSString * p in files) {

NSError * error = nil ;

//获取文件全路径

NSString * fileAbsolutePath = [cachePath stringByAppendingPathComponent :p];

if ([[NSFileManager defaultManager ] fileExistsAtPath :fileAbsolutePath]) {

[[NSFileManager defaultManager ] removeItemAtPath :fileAbsolutePath error :&error];

}

}

//读取缓存大小

float cacheSize = [self readCacheSize] *1024;

self.cacheSize.text = [NSString stringWithFormat:@"%.2fKB",cacheSize];

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 IOS 缓存文件的清除实现代码 https://www.kuaiidc.com/91565.html

相关文章

发表评论
暂无评论