gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章IOS 缓存文件的清除实现代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

移动互联网 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];
 
}

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

最后此篇关于IOS 缓存文件的清除实现代码的文章就讲到这里了,如果你想了解更多关于IOS 缓存文件的清除实现代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com