IOS开发入门之如何有效的清除文件缓存?
凌雪 2018-10-23 来源 :网络 阅读 771 评论 0

摘要:本文将带你了解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频道!

 

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程