ios-清除本地缓存(三种方式)

原创 2015年09月13日 09:58:27
缓存的清除对我们程序员来说很重要 
软件 运行时间过长 会导致缓存的增加 
从而导致手机的运行速度减慢 所以我们必须对缓存重视起来
下面简单介绍 清除缓存的三种方式
- (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);
}
//1. 清除缓存第一种
-(void)clearCache
{
    //彻底清除缓存第一种方法
 
  
    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];
        }
    }
    //    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 :%lu",(unsigned long)[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)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];
//        }
//    }
//}


//2. SDImage第三方清除缓存的方法
//[[SDImageCache sharedImageCache] clearDisk];
//[[SDImageCache sharedImageCache] clearMemory];

//3. 彻底清除缓存第二种方法
//
//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(@"清理成功");
}

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS清除缓存(OC实现)

//清除缓存按钮的点击事件 - (void)putBufferBtnClicked:(UIButton *)btn{ CGFloat size = [self folderSizeAtPat...
  • RuiWang321
  • RuiWang321
  • 2016年01月30日 12:11
  • 7976

iOS 心得九:应用缓存的查看和清除

今天项目中要用到缓存的计算和清理,由于现在iOS就我一个小虾米,so,虽然自己以前没有写过,好了,多的不说,开始代码。 首先 惯例,代码的demo地址:https://github.com...
  • github_30943901
  • github_30943901
  • 2015年11月02日 21:08
  • 1354

iOS中设置清除缓存功能的实现方法

转自: http://www.jb51.net/article/119192.htm iOS中设置清除缓存功能的实现方法 清除缓存基本上都是在设置界面的某一个Cell,于是我们...
  • zhanglizhi111
  • zhanglizhi111
  • 2017年12月12日 08:43
  • 137

iOS清除缓存详细解析、app文件路径操作,真机沙盒理解

实现清除缓存,首先要了解是要清除哪里的缓存,所以我们先对一个app里面的文件有所了解。 查看app文件内容的方法:打开Xcode ->工具栏Window ->Devices ->选择设备->单击项目...
  • u010971348
  • u010971348
  • 2016年11月22日 19:33
  • 636

ios 清理缓存

一段清理缓存的代码如下: dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)...
  • daiyelang
  • daiyelang
  • 2014年06月11日 16:28
  • 29685

iOS获取缓存文件的大小并清除缓存

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、...
  • Leemin_ios
  • Leemin_ios
  • 2017年02月24日 15:51
  • 821

iOS数据缓存和清除

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类a...
  • qq_29892943
  • qq_29892943
  • 2016年11月25日 16:10
  • 841

OC数据储存本地(一)-----iOS----NSUserDefaults 保存 清空

具体来说NSUserDefaults是iOS系统提供的一个单例类(iOS提供了若干个单例类),通过类方法standardUserDefaults可以获取NSUserDefaults单例 常见到的轻量级...
  • qq_36747738
  • qq_36747738
  • 2017年02月17日 14:33
  • 1475

95.iOS 本地文件夹缓存情况介绍document,tmp,library,caches 文件路径保存 文件适合保存在那种路径下

一、获得文件保存路径 1."应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。 NSString *path = [[NSBundle mainBundle] bundle...
  • qin_xiaogang
  • qin_xiaogang
  • 2016年07月25日 10:52
  • 3404

IOS 开发 Cache文件夹缓存的清理封装(包括WebKit缓存/SDImageCache缓存),都提供了相应的接口.

ClearCachesTool.h// // ClearCachesTool.h // demo // // Created by zhouyu on 2016/12/27. // Copyr...
  • kuangdacaikuang
  • kuangdacaikuang
  • 2016年12月28日 17:56
  • 1601
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios-清除本地缓存(三种方式)
举报原因:
原因补充:

(最多只允许输入30个字)