zoukankan      html  css  js  c++  java
  • ios---清除缓存

    + (void)removeDirectoryPath:(NSString *)directoryPath
    {
        // 获取文件管理者
        NSFileManager *mgr = [NSFileManager defaultManager];
        
        BOOL isDirectory;
        BOOL isExist = [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];
        
        if (!isExist || !isDirectory) {
            // 抛异常
            // name:异常名称
            // reason:报错原因
            NSException *excp = [NSException exceptionWithName:@"pathError" reason:@"笨蛋 需要传入的是文件夹路径,并且路径要存在" userInfo:nil];
            [excp raise];
            
        }
        
        // 获取cache文件夹下所有文件,不包括子路径的子路径
        NSArray *subPaths = [mgr contentsOfDirectoryAtPath:directoryPath error:nil];
        
        for (NSString *subPath in subPaths) {
            // 拼接完成全路径
            NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];
            
            // 删除路径
            [mgr removeItemAtPath:filePath error:nil];
        }
    
    }
    
    // 自己去计算SDWebImage做的缓存
    + (void)getFileSize:(NSString *)directoryPath completion:(void(^)(NSInteger))completion
    {
        
        // 获取文件管理者
        NSFileManager *mgr = [NSFileManager defaultManager];
        BOOL isDirectory;
        BOOL isExist = [mgr fileExistsAtPath:directoryPath isDirectory:&isDirectory];
        
        if (!isExist || !isDirectory) {
            // 抛异常
            // name:异常名称
            // reason:报错原因
           NSException *excp = [NSException exceptionWithName:@"pathError" reason:@"笨蛋 需要传入的是文件夹路径,并且路径要存在" userInfo:nil];
            [excp raise];
            
        }
        
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            
            // 获取文件夹下所有的子路径,包含子路径的子路径
            NSArray *subPaths = [mgr subpathsAtPath:directoryPath];
            
            NSInteger totalSize = 0;
            
            for (NSString *subPath in subPaths) {
                // 获取文件全路径
                NSString *filePath = [directoryPath stringByAppendingPathComponent:subPath];
                
                // 判断隐藏文件
                if ([filePath containsString:@".DS"]) continue;
                
                // 判断是否文件夹
                BOOL isDirectory;
                // 判断文件是否存在,并且判断是否是文件夹
                BOOL isExist = [mgr fileExistsAtPath:filePath isDirectory:&isDirectory];
                if (!isExist || isDirectory) continue;
                
                // 获取文件属性
                // attributesOfItemAtPath:只能获取文件尺寸,获取文件夹不对,
                NSDictionary *attr = [mgr attributesOfItemAtPath:filePath error:nil];
                
                // 获取文件尺寸
                NSInteger fileSize = [attr fileSize];
                
                totalSize += fileSize;
            }
            
            // 计算完成回调
            dispatch_sync(dispatch_get_main_queue(), ^{
                if (completion) {
                    completion(totalSize);
                }
            });
            
            
    
        });   
    }
    
    - (NSString *)sizeStr
    {
        NSInteger totalSize = _totalSize;
        NSString *sizeStr = @"清除缓存";
        // MB KB B
        if (totalSize > 1000 * 1000) {
            // MB
            CGFloat sizeF = totalSize / 1000.0 / 1000.0;
            sizeStr = [NSString stringWithFormat:@"%@(%.1fMB)",sizeStr,sizeF];
        } else if (totalSize > 1000) {
            // KB
            CGFloat sizeF = totalSize / 1000.0;
            sizeStr = [NSString stringWithFormat:@"%@(%.1fKB)",sizeStr,sizeF];
        } else if (totalSize > 0) {
            // B
            sizeStr = [NSString stringWithFormat:@"%@(%.ldB)",sizeStr,totalSize];
        }
    
        return sizeStr;
    }
    
  • 相关阅读:
    CSPS模拟 65
    CSPS模拟 64
    $color$有色图
    CSPS模拟 63
    CSPS模拟 62
    CSPS模拟 61
    CSPS模拟 60
    CSPS模拟 59
    go中单链表
    MYSQL-联合索引
  • 原文地址:https://www.cnblogs.com/frankltf/p/7484819.html
Copyright © 2011-2022 走看看