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];

还有一个方法是可以做到类似于剪切操作的

 [mgr moveItemAtPath:path1 toPath:path2 error:(NSError * _Nullable __autoreleasing * _Nullable)];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值