zoukankan      html  css  js  c++  java
  • 计算缓存大小和清理缓存

    第一步:创建工具类-BDFileManagerTool

    (1).h的代码

    @interface BDFileManagerTool : NSFileManager
    
    /** 计算单个文件大小*/
    + (float)fileSizeAtPath:(NSString *)path;
    
    /** 计算目录大小 */
    +(float)folderSizeAtPath:(NSString *)path;
    
    /** 清除缓存*/
    +(void)clearCache:(NSString *)path;
    
    @end
    

    2).m的代码

    #import "BDFileManagerTool.h"
    #import "SDWebImageManager.h"
    
    
    @implementation BDFileManagerTool
    
    /**
     *  计算单个文件的大小
     *
     *  @param path 文件的路径
     *
     *  @return 大小
     */
    + (float)fileSizeAtPath:(NSString *)path {
        NSFileManager *fileManager=[NSFileManager defaultManager];
        if([fileManager fileExistsAtPath:path]){
            long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
            return size/1024.0/1024.0;
        }
        return 0;
    }
    
    /**
     *  计算目录大小
     *
     *  @param path 目录的路径
     *
     *  @return 目录的大小
     */
    
    +(float)folderSizeAtPath:(NSString *)path{
        NSFileManager *fileManager=[NSFileManager defaultManager];
        float folderSize;
        
        if ([fileManager fileExistsAtPath:path]) {
            NSArray *childerFiles=[fileManager subpathsAtPath:path];
            
            for (NSString *fileName in childerFiles) {
                
                NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
                folderSize +=[BDFileManagerTool fileSizeAtPath:absolutePath];
            }
            //SDWebImage框架自身计算缓存的实现
            folderSize += [[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
            return folderSize;
        }
        return 0;
    }
    
    /**
     *  清楚缓存
     *
     *  @param path 缓存的路径
     */
    +(void)clearCache:(NSString *)path{
        NSFileManager *fileManager=[NSFileManager defaultManager];
        if ([fileManager fileExistsAtPath:path]) {
            NSArray *childerFiles=[fileManager subpathsAtPath:path];
            for (NSString *fileName in childerFiles) {
                //如有需要,加入条件,过滤掉不想删除的文件
                NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
                [fileManager removeItemAtPath:absolutePath error:nil];
            }
        }
        [[SDImageCache sharedImageCache] clearDisk];
        
        [YZTools toastMake:@"清除缓存成功" isPush:NO];
    }
    
    @end
    

    第二步:运用

    //获取大小
    - (void)getFileData {
        CGFloat fileSize = [BDFileManagerTool folderSizeAtPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];
        NSLog(@"fileSize------%.2f",fileSize);
    }
    
    //清理缓存
    - (void)clearCache {
      [BDFileManagerTool clearCache:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]];  
    }
    
  • 相关阅读:
    白话数字签名(番外篇)签名EXE文件(下)
    浅谈javascript函数劫持(一)
    CentOS实验五:设置主机名称
    CentOS实验四:为虚拟机配置双网卡
    CentOS实验二:添加操作员帐号
    Linux命令提示符设置
    CentOS实验三:使用安装光盘建立本地软件源
    CentOS实验一:安装CentOS Server
    mount命令
    CentOS实验六:设置命令提示符
  • 原文地址:https://www.cnblogs.com/lyz0925/p/5696943.html
Copyright © 2011-2022 走看看