• 计算缓存大小和清理缓存


    第一步:创建工具类-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]];  
    }
    
  • 相关阅读:
    PHP读取MySQL中文乱码
    dotnet如何使用资源文件
    常见的隐藏地址的流媒体下载方法(转)
    圣诞礼物:Google Maps API开发样例一则
    Google EarthMapsKML核心开发技术揭秘 一个完整的Google Maps应用
    WEB界面测试用例~ 收藏
    通过xmlhttp实现报告归档
    转换长日期为短日期
    做delphi控件的笔记
    Reflector使用手记
  • 原文地址:https://www.cnblogs.com/lyz0925/p/5696943.html
Copyright © 2020-2023  润新知