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]];  
    }
    
  • 相关阅读:
    3--Selenium环境准备--Eclipse 引入 selenium-server包
    2--Selenium环境准备--第一次使用Testng
    1--Selenium环境准备--Eclipse 添加Testng插件
    2--Jmeter 4.0--Excel 数据驱动 接口测试
    1--Jmeter4.0连接Oracle数据库
    冲刺第六天
    构建执法阅读笔记5
    学习进度八
    冲刺第五天
    冲刺第四天
  • 原文地址:https://www.cnblogs.com/lyz0925/p/5696943.html
Copyright © 2011-2022 走看看