zoukankan      html  css  js  c++  java
  • iOS开发一行代码搞定缓存计算及清除缓存

    话不多说,直接撸代码

     1 //
     2 //  gzhCache.h
     3 //  cache
     4 //
     5 //  Created by 郭志贺 on 2020/5/27.
     6 //  Copyright © 2020 郭志贺. All rights reserved.
     7 //
     8 
     9 #import <Foundation/Foundation.h>
    10 
    11 NS_ASSUME_NONNULL_BEGIN
    12 
    13 @interface gzhCache : NSObject
    14 
    15 /// 计算缓存大小
    16 +(float)filePath;
    17 
    18 /// 清理缓存
    19 +(void)clearCache;
    20 @end
    21 
    22 NS_ASSUME_NONNULL_END
     1 //
     2 //  gzhCache.m
     3 //  cache
     4 //
     5 //  Created by 郭志贺 on 2020/5/27.
     6 //  Copyright © 2020 郭志贺. All rights reserved.
     7 //
     8 
     9 #import "gzhCache.h"
    10 
    11 @implementation gzhCache
    12 // 显示缓存大小
    13 + (float)filePath {
    14     NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];
    15     
    16     return [ self folderSizeAtPath :cachPath];
    17 }
    18 //计算单个文件的大小
    19 + (long long) fileSizeAtPath:( NSString *) filePath{
    20     NSFileManager * manager = [ NSFileManager defaultManager ];
    21     if ([manager fileExistsAtPath :filePath]){
    22         return [[manager attributesOfItemAtPath :filePath error : nil ] fileSize ];
    23     }
    24     return 0 ;
    25 }
    26 //遍历文件夹获得文件夹大小,返回多少M
    27 + (float)folderSizeAtPath:(NSString *)folderPath{
    28     NSFileManager * manager = [ NSFileManager defaultManager ];
    29     if (![manager fileExistsAtPath :folderPath]) return 0 ;
    30     NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator ];
    31     NSString * fileName;
    32     long long folderSize = 0 ;
    33     while ((fileName = [childFilesEnumerator nextObject ]) != nil ){
    34         NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName];
    35         folderSize += [ self fileSizeAtPath :fileAbsolutePath];
    36     }
    37     return folderSize/( 1024.0 * 1024.0 );
    38 }
    39 //清理缓存
    40 + (void)clearCache {
    41     NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];
    42     NSArray * files = [[ NSFileManager defaultManager ] subpathsAtPath :cachPath];
    43     NSLog ( @"cachpath = %@" , cachPath);
    44     for ( NSString * p in files) {
    45         NSError * error = nil ;
    46         NSString * path = [cachPath stringByAppendingPathComponent :p];
    47         if ([[ NSFileManager defaultManager ] fileExistsAtPath :path]) {
    48             [[ NSFileManager defaultManager ] removeItemAtPath :path error :&error];
    49         }
    50     }
    51     [ self performSelectorOnMainThread : @selector (clearCachSuccess) withObject : nil waitUntilDone : YES ];
    52 }
    53 + (void)clearCachSuccess {
    54     NSLog(@"清理成功");
    55 }
    56 @end

    需要查询大小的地方使用:

    NSString *str = [NSString stringWithFormat:@"%.2fM",[gzhCache filePath]];
    

    清理的方法调用

    [gzhCache clearCache];
    

     以上内容仅代表本菜鸟看法,复制可直接使用。如有不妥之处敬请告知。

  • 相关阅读:
    《我是一只IT小小鸟》
    实现对字符串的反转输出与句子的反转输出
    7.13学习记录
    CentOS 7 不能连接网路的解决方法
    Xshell连接linux服务器不成功的乌龙问题
    Python基础(二)数据类型
    Python基础(一)
    UML精粹3
    UML精粹2
    UML精粹1
  • 原文地址:https://www.cnblogs.com/guozhihe/p/12973754.html
Copyright © 2011-2022 走看看