zoukankan      html  css  js  c++  java
  • iOS清理缓存的几种方法

    iOS清理缓存的几种方法,有需要的朋友可以参考下:

    1.计算文件大小:

    - (long long) fileSizeAtPath:(NSString*) filePath{

    NSFileManager* manager = [NSFileManager defaultManager];

    if ([manager fileExistsAtPath:filePath]){

    return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];

    }

    return 0;

    }

    2.计算文件夹大小:

    //遍历文件夹获得文件夹大小,返回多少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);

    }

    3.清除缓存第一种

    - (void)action:(id)sender

    {

    //彻底清除缓存第一种方法

    UIButton * button = sender;

    [button setTitle:@"清理完毕" forState:UIControlStateNormal];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path = [paths lastObject];



    NSString *str = [NSString stringWithFormat:@"缓存已清除%.1fM", [self folderSizeAtPath:path]];

    NSLog(@"%@",str);

    NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:path];

    for (NSString *p in files) {

    NSError *error;

    NSString *Path = [path stringByAppendingPathComponent:p];

    if ([[NSFileManager defaultManager] fileExistsAtPath:Path]) {

    [[NSFileManager defaultManager] removeItemAtPath:Path error:&error];

    }

    }

     

    4.SDImage第三方清除缓存的方法:  (清除的一般是图片的缓存)

    [[SDImageCache sharedImageCache] clearDisk];  //清楚磁盘缓存

    [[SDImageCache sharedImageCache] clearMemory];    //清楚内存缓存

    5.开启多线程清除缓存:


    dispatch_async(

    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

    , ^{

    NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSLog(@"%@", cachPath);

    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(@"清理成功");

  • 相关阅读:
    2020寒假 学习进度笔记4:spark使用1
    2020寒假 学习进度笔记3:Spark安装
    2020寒假 学习进度笔记2:Scala学习
    2020寒假 学习进度笔记1:Scala安装(Windows + Lunux)
    测试试卷—数据清洗
    实验6:Mapreduce实例——WordCount
    个人课程总结
    如何打jar包
    初探性能优化——2个月到4小时的性能提升(copy)推荐阅读
    《阿里巴巴Java工作手册》学习笔记
  • 原文地址:https://www.cnblogs.com/pengsi/p/5106686.html
Copyright © 2011-2022 走看看