缓存清理

// 显示缓存大小

//NSDocumentDirectory  Document目录中的数据

//NSCachesDirectory     缓存中的数据

- ( float )filePath

{

    //NSDocumentDirectory  Document目录中的数据
    //NSCachesDirectory     缓存中的数据
    NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];

    UIAlertView * alertView = [[ UIAlertView alloc ] initWithTitle : @" 提示 " message : [NSString stringWithFormat:@"%f",[ self folderSizeAtPath :cachPath]]  delegate : nil cancelButtonTitle : @" 确定 " otherButtonTitles : nil ];

    [alertView show ];

    return [ self folderSizeAtPath :cachPath];

}

//2: 遍历文件夹获得文件夹大小,返回多少 M(提示:你可以在工程界设置()m)

//2: 遍历文件夹获得文件夹大小,返回多少 M(提示:你可以在工程界设置()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:首先我们计算一下 单个文件的大小

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

    NSFileManager * manager = [ NSFileManager defaultManager ];

    if ([manager fileExistsAtPath :filePath]){

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

    }

    return 0 ;

}

// 清理缓存 方法一

- ( void )clearFile

{
    //NSDocumentDirectory  Document目录中的数据
    //NSCachesDirectory     缓存中的数据
    NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];

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

    NSLog ( @"cachpath = %@" , cachPath);

    for ( NSString * p in files) {

        NSError * error = nil ;

        NSString * path = [cachPath stringByAppendingPathComponent :p];

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

            [[ NSFileManager defaultManager ] removeItemAtPath :path error :&error];
        }
    }
    [ self performSelectorOnMainThread : @selector (clearCachSuccess) withObject : nil waitUntilDone : YES ];

}

- ( void )clearCachSuccess

{

    NSLog ( @" 清理成功 " );

    UIAlertView * alertView = [[ UIAlertView alloc ] initWithTitle : @" 提示 " message : @" 缓存清理完毕 " delegate : nil cancelButtonTitle : @" 确定 " otherButtonTitles : nil ];

    [alertView show ];

    //[ _tableView reloadData ];//清理完之后重新导入数据

}

方法二

//清除缓存
- (void)clear
{
    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(@"清除缓存");
}
时间: 2024-08-25 16:29:47

缓存清理的相关文章

手机卫士11_ 自定义控件_缓存清理_病毒库更新

拷贝安卓源码中的逻辑,可以考虑先创建一个小项目实现以下效果 1,病毒数据库的自动更新(连接网络,然后获取特征码保存到数据库?) ①工程师发现病毒apk,获取到它的特征码发布到服务器上 通过 MD5 或者ASH1获取特征码 ②客户端杀毒软件下载特征码(可能是 JSON串)到本地客户端 (在打开软件的时候还是打开查杀界面的时候?其实都不适合,应该开启一个服务去定期更新数据库,访问病毒更新特征码地址) 定期更新,timer和timertask,一般一个小时更新一次(测试的时候写短一点) 连接服务器:U

PHP7 opcache缓存清理问题

PHP7 opcache缓存清理问题 背景 OPcache通过opcode的缓存和优化,提供更快的PHP执行过程.业务在php7环境运营时,为了提升请求的性能,在PHP7环境中配置OPcache扩展.业务在更新代码后,访问业务系统时提示无法找到对应的文件或请求的内容还是更新前的旧内容,webserver重启以后,请求访问到的文件就都是最新的了,问题就貌似解决了. 问题分析 根据现象分析,代码更新后请求找不到新增的文件,尤其是还在请求已有文件更新前的内容,那么可能跟缓存有关系,考虑到跟业务代码逻辑

手机安全卫士——缓存清理

CleanCacheActivity.java /** * 缓存清理*/ public class CleanCacheActivity extends Activity { private PackageManager packageManager; private List<CacheInfo> cacheLists; private ListView list_view; @Override protected void onCreate(Bundle savedInstanceStat

Android Glide数据更新及内存缓存、硬盘缓存清理

[转] 原文                                         Android Glide数据更新及内存缓存.硬盘缓存清理 Android的Glide在加载图片时候内部默认使用了缓存机制,Glide的缓存机制分为两级,第一级是内存缓存,然后第二级是硬盘缓存.缓存的过程首先是在内存中缓存,然后将加载的图片资源缓存到硬盘,这样就可以在随后的再次加载中使用缓存了,Glide使用缓存时候首先要检查内存这一层级是否缓存了相应的缓存,如果有,则直接使用,如果没有,则深入到硬盘缓

Hibernate中的脏检查和缓存清理机制

脏检查 Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进行脏检查,即比较Customer对象的当前属性与它的快照,来判断Customer对象的属性是否发生了变化,如果发生了变化,就称这个对象是“脏对象”,Session会根据脏对象的最新属性来执行相关的SQL语句,从而同步更新数据库. 脏数据检查: 什么是脏数据?脏数据并不是废弃和无用的数据,而是状

脏检查 和 缓存清理机制

Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进行脏检查,即比较Customer对象的当前属性与它的快照,来判断Customer对象的属性是否发生了变化,如果发生了变化,就称这个对象是“脏对象”,Session会根据脏对象的最新属性来执行相关的SQL语句,从而同步更新数据库. 缓存清理机制 当Session缓存中对象的属性每次发生了变化,Sessi

Hibernate——脏检查和缓存清理机制

脏检查 Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,Session会为Customer对象的值类型的属性复制一份快照.当Session清理缓存时,会先进行脏检查,即比较Customer对象的当前属性与它的快照,来判断Customer对象的属性是否发生了变化,如果发生了变化,就称这个对象是“脏对象”,Session会根据脏对象的最新属性来执行相关的SQL语句,从而同步更新数据库. 缓存清理机制 当Session缓存中对象的属性每次发生了变化,S

关于IE缓存清理——尤其对Web前台开发人员

当我们开发过程中修改了JS等文件之后,发现IE使用的还是原先的文件.这是因为一般情况下,IE会将JS.CSS文件.图片文件进行缓存,下次读取的时候首先从缓存读取,如果没有才获取新的文件.因此,在开发过程中如果这些文件修改过,应该及时清理IE缓存,否则效果无法呈现. 一般清理IE缓存的方法:(我目前是英文版Win7,IE10,中文版类似) IE-->Tools-->Internet Options-->点击Delete按钮. 在弹出的界面中按Delete按钮 上述方法想必大家都知道. 重点

iOS之缓存清理

作为一个开发者,对于缓存的清理也是理所应当的需要的.这次就简单的谈一下iOS中对于缓存的清理方法. 我们清理缓存通常是在这三种方式下进行的: (1)项目中的清理缓存按钮 (2)点击退出app按钮时清理缓存 (3)手动杀死进程  (说明:我们使用苹果手机时,大部分人并不喜欢每次都去点击退出app按钮.所以客户就有了在我们手动杀死进程时,对app进行缓存清理的要求) 接下来我们就从这三种方面来分析iOS的清理缓存. 我们知道iOS应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几