清除缓存

.h文件
@interface WdCleanCaches : NSObject

/**

  • 返回path路径下文件的文件大小。
    */
  • (double)sizeWithFilePaht:(NSString *)path;

/**

  • 删除path路径下的文件。
    */
  • (void)clearCachesWithFilePath:(NSString *)path;

/**

  • 获取沙盒Library的文件目录。
    */
  • (NSString *)LibraryDirectory;

/**

  • 获取沙盒Document的文件目录。
    */
  • (NSString *)DocumentDirectory;

/**

  • 获取沙盒Preference的文件目录。
    */
  • (NSString *)PreferencePanesDirectory;

/**

  • 获取沙盒Caches的文件目录。
    */
  • (NSString *)CachesDirectory;

.m文件

  • (NSString *)LibraryDirectory
    {
    return [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
    }

  • (NSString *)DocumentDirectory
    {
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    }

  • (NSString *)PreferencePanesDirectory
    {
    return [NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject];
    }

  • (NSString *)CachesDirectory
    {
    return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
    }
    // 按路径清除文件

  • (void)clearCachesWithFilePath:(NSString *)path
    {
    NSFileManager *mgr = [NSFileManager defaultManager];
    if ([mgr fileExistsAtPath:path]) {
    NSArray *childrenFiles = [mgr subpathsAtPath:path];
    for (NSString *fileName in childrenFiles) {
    //如有需要加入条件,过滤掉不想删除的文件
    NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
    [mgr removeItemAtPath:absolutePath error:nil];
    }
    }
    }

  • (double)sizeWithFilePaht:(NSString *)path
    {
    // 1.获得文件夹管理者
    NSFileManager *mgr = [NSFileManager defaultManager];

    // 2.检测路径的合理性
    BOOL dir = NO;
    BOOL exits = [mgr fileExistsAtPath:path isDirectory:&dir];
    if (!exits) return 0;

    // 3.判断是否为文件夹
    if (dir) { // 文件夹, 遍历文件夹里面的所有文件
    // 这个方法能获得这个文件夹下面的所有子路径(直接\间接子路径)
    NSArray *subpaths = [mgr subpathsAtPath:path];
    int totalSize = 0;
    for (NSString *subpath in subpaths) {
    NSString *fullsubpath = [path stringByAppendingPathComponent:subpath];

          BOOL dir = NO;
          [mgr fileExistsAtPath:fullsubpath isDirectory:&dir];
          if (!dir) { // 子路径是个文件
              NSDictionary *attrs = [mgr attributesOfItemAtPath:fullsubpath error:nil];
              totalSize += [attrs[NSFileSize] intValue];
          }
      }
      return totalSize / (1000 * 1000.0);
    

    } else { // 文件
    NSDictionary *attrs = [mgr attributesOfItemAtPath:path error:nil];
    return [attrs[NSFileSize] intValue] / (1000 * 1000.0);
    NSLog(@"+++++++++++++++可清空数据%f++++++++++++++++++",[attrs[NSFileSize] intValue] / (1000 * 1000.0));
    }
    }

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 记录一下iOS开发中的设置界面经常用到的清理缓存功能的代码实现。 一、流程介绍 缓存文件存到了沙盒...
    是刺猬阅读 888评论 0 5
  • 清除缓存在每一个应用是一个很常见的功能,今天这里小结一下。 将数据永久性的存储我们称为数据持久化,其本质是将数据存...
    追逐_chase阅读 582评论 0 1
  • #pragma mark - 第一步,计算缓存文件的大小 //首先获取缓存文件的路径 -(NSString *)g...
    破夕_____________阅读 699评论 0 3
  • 清除缓存的方法 自己在网上找的清除缓存的方法 注:具体代码在项目一的练习的WXMovi(清除缓存)工程中的More...
    Sweet苗阅读 1,080评论 0 0
  • ① 旺卡先生半夜睡不着,来找我诉苦,开头一个“唉”,我便知又是感情问题。 果不其然,他又开始想念遇秋小姐了,整夜整...
    克特西芬阅读 3,768评论 13 58