摘要:本文将带你了解IOS开发入门之如何有效的清除文件缓存?希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门之如何有效的清除文件缓存?希望本文对大家学IOS有所帮助。
ios开发中如何有效的清除文件缓存?在有一些应用中应该都会有一些缓存是保存在磁盘中的,然后应用也会去提供清除缓存的按钮,而且还会告诉你缓存现在有多大。
那么我们是如何去得到缓存大小的呢,如何去清除? 首先我们要明确既然要得到缓存的大小,那么我们肯定需要去得到文件的大小
但是这里需要注意的是文件夹本身是没有文件大小这个属性的,可能会有疑问了,但是我右键可以查看,那个是通过计算文件夹中
的文件去计算出来的。在ios中我们想操纵文件的话是需要去用到一个类的就是NSFileManager,我们如果直接去获取文件夹的大小是获取
不到的,准备的说是NSFileSize对应的值不对,但是如果通过获取文件的大小是获取的到的,如下所示
//获取文件管理者
NSFileManager * mgr = [NSFileManager defaultManager];
//获取缓存路径
NSString * string = @"文件路径";
NSDictionary * attrs = [mgr attributesOfItemAtPath:string error:NULL];
NSLog(@"%@",attrs);
//获取文件夹中的所有的直接内容
NSArray * contents = [mgr contentsOfDirectoryAtPath:string error:NULL];
我们可以给NSString增加一个分类去计算文件夹的大小
-(NSInteger)fileSize
{
NSFileManager * mgr = [NSFileManager defaultManager];
//判断是否为文件夹的一个标记
BOOL isDirectory = NO;
//isDirectory传入进去,取出的如果是YES就是文件夹
BOOL exists = [mgr fileExistsAtPath:self isDirectory:&isDirectory];
//判断文件或者文件夹存不存在
if(exists==NO)
{
return 0;
}
//如果是一个文件夹,我们就去遍历caches中的所有的内容包括直接和间接的内容
if(isDirectory)
{
NSArray * subPaths = [mgr subpathsAtPath:self];
NSInteger totalByteSize =0;
for(NSString * subPath in subPaths)
{
//获取全路径
NSString * fullSubPath = [self stringByAppendingPathComponent:subPath];
//判断是否为文件
BOOL isDirectory = NO;
//表示是文件
if(isDirectory==NO)
{
totalByteSize+=[[mgr attributesOfItemAtPath:fullSubPath error:NULL][NSFileSize]integerValue];
}
}
return totalByteSize;
}
//如果是单个文件就输出文件大小
else
{
return [[mgr attributesOfItemAtPath:self error:NULL][NSFileSize]integerValue];
}
}
如果我们要去删除某个文件或者某个文件夹,我们直接用文件管理者对象的一个方法就可以了
NSString * str1 = @"文件/文件夹路径";
[mgr removeItemAtPath:str1 error:NULL];
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号