zoukankan      html  css  js  c++  java
  • 获取缓存文件大小并清理 By HL

    通常用于删除缓存的时,计算缓存大小

    //单个文件的大小
    - (long long) fileSizeAtPath:(NSString*) filePath{
        NSFileManager* manager = [NSFileManager defaultManager];
        if ([manager fileExistsAtPath:filePath]){
            return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
        }
        return 0;
    }
    
    //遍历文件夹获得文件夹大小,返回多少M
    - (float ) folderSizeAtPath:(NSString*) folderPath{
        NSFileManager* manager = [NSFileManager defaultManager];
        if (![manager fileExistsAtPath:folderPath]) return 0;
        NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
        NSString* fileName;
        long long folderSize = 0;
        while ((fileName = [childFilesEnumerator nextObject]) != nil){
            NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
            folderSize += [self fileSizeAtPath:fileAbsolutePath];
        }
        return folderSize/(1024.0*1024.0);
    }
    

     遍历出Caches目录的所有文件大小

        - (void)fileSize{  
          
            NSFileManager *manager = [NSFileManager defaultManager];  
            NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];  
              
            NSArray *files = [manager subpathsOfDirectoryAtPath:cachePath error:nil]; // 递归所有子路径  
              
            NSInteger totalSize = 0;  
              
            for (NSString *filePath in files) {  
                NSString *path = [cachePath stringByAppendingPathComponent:filePath];  
                // 判断是否为文件  
                BOOL isDir = NO;  
                [manager fileExistsAtPath:path isDirectory:&isDir];  
                if (!isDir) {  
                    NSDictionary *attrs = [manager attributesOfItemAtPath:path error:nil];  
                    totalSize += [attrs[NSFileSize] integerValue];  
                }  
            }  
              
            NSLog(@"%d",totalSize);  
              
        }  
    

    SDImageCache计算缓存方法

    - (NSUInteger)getSize {
        __block NSUInteger size = 0;
        dispatch_queue_t ioQueue = dispatch_queue_create("com.hackemist.SDWebImageCache", DISPATCH_QUEUE_SERIAL);
        dispatch_sync(ioQueue, ^{
            NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];
            for (NSString *fileName in fileEnumerator) {
                NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName];
                NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
                size += [attrs fileSize];
            }
        });
        return size;
    }
    

     

    删除缓存

    //单文件

    -(void)cleanDisk{
        NSFileManager *defaultManager = [NSFileManager defaultManager];
        [defaultManager removeItemAtPath:self.diskCachePath error:nil];
    }
    

    多文件

    -(void)cleanDisk{
        dispatch_async(
                       dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
                       , ^{
                           NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];
    
                           NSArray *files     = [[NSFileManager defaultManager] subpathsAtPath:cachPath];
                           NSLog(@"files :%d",[files count]);
                           for (NSString *p in files) {
                               NSError *error;
                           NSString *path     = [cachPath stringByAppendingPathComponent:p];
                               if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
                                   [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
                               }
                           }
        [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];
    
    }
    
    -(void)clearCacheSuccess
    {
        NSLog(@"清理成功");
    }
    
  • 相关阅读:
    夺命雷公狗TP3.2.3商城11-----后台头部和左侧导航分离
    夺命雷公狗TP3.2.3商城10-----中间层的创建,防止跨目录访问
    3.spring cloud eureka 高可用
    2.spring cloud eureka client配置
    1.spring cloud eureka server配置
    css去掉input记住密码的黄色
    34-THREE.JS 游泳圈
    32-THREE.JS 球体
    31-THREE.JS 正方体
    30-THREE.JS 圆环
  • 原文地址:https://www.cnblogs.com/sixindev/p/4737673.html
Copyright © 2011-2022 走看看