NSFileManager与沙盒 --- 清除缓存
思维导图:清除缓存整体思路
一、沙盒的文件
1、Documents:存储用户常用的文件(比较小的文件,因为备份时会备份这个文件夹下的内容)
2、Library: 存储的是缓存文件或者说是下载的文件。
3、Tmp: 存储的是临时文件。
二、NSFileManager操作清除缓存
方法一:计算所有文件夹大小及文件大小(会遍历文件夹中所有文件夹中的文件)
1 2 3 4 5 6 7 8 9 10 | NSFileManager *mag = [NSFileManager defaultManager]; __block long long size = 0; NSDirectoryEnumerator *enums = [mag enumeratorAtPath:dirPath]; for (NSString *subString in enums) { //用目录路径拼接文件管理目录中的子文件路径等到全路径,如dirPath/A,dirPath/B,这样的话就可以获取所有文件夹下内容的大小 NSString *fullString = [dirPath stringByAppendingPathComponent:subString]; //取出所有文件、文件夹的属性计算尺寸 size += [mag attributesOfItemAtPath:fullString error:nil].fileSize; NSLog( @"%zd" ,size); } |
方法二:计算所有文件的大小(不会遍历里面文件夹)
1 2 3 4 5 6 7 8 9 10 11 | //subpathsAtPath:返回NSArray提供的所有内容和递归子路径路,意思是说比较耗时 NSArray *asg = [mag subpathsAtPath:dirPath]; __block long long size = 0; for (NSString *subString in asg) { //全路径, NSString *fullPath = [dirPath stringByAppendingPathComponent:subString]; //文件的属性,遍历文件夹中所有文件或文件夹。 NSDictionary *attri = [mag attributesOfItemAtPath:fullPath error:nil]; size += [attri fileSize]; NSLog( @"%.2lldM" ,size); } |
三、封装成NSString的分类方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | unsigned long long size = 0; NSFileManager *fileM = [NSFileManager defaultManager]; NSDictionary *attri = [fileM attributesOfItemAtPath:self error:nil]; // BOOL isExist = NO; // [fileM fileExistsAtPath:self isDirectory:&isExist]; // if (isExist) { // } //这个方法也是判断文件夹是否存在 if (attri.fileType == NSFileTypeDirectory) { //是否为文件夹 NSDirectoryEnumerator *enums = [fileM enumeratorAtPath:self]; for (NSString *subString in enums) { //用目录路径拼接文件管理目录中的子文件路径等到全路径,如dirPath/A,dirPath/B,这样的话就可以获取所有文件夹下内容的大小 NSString *fullString = [self stringByAppendingPathComponent:subString]; //取出所有文件、文件夹的属性计算尺寸 size += [fileM attributesOfItemAtPath:fullString error:nil].fileSize; } } else { NSArray *files = [fileM subpathsAtPath:self]; for (NSString *subString in files) { NSString *fullPath = [self stringByAppendingPathComponent:subString]; size += [fileM attributesOfItemAtPath:fullPath error:nil].fileSize; } } return size; |
将来的自己,会感谢现在不放弃的自己!
标签:
iOS基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2016-03-15 为什么xcode7请求不成功
2016-03-15 钥匙串显示“此证书签的发者无效”解决