iOS ---清除缓存


[self  clearCache];






#pragma mark - 点击事件


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

    if (buttonIndex) {

        

        //点击了确定,遍历整个caches文件,将里面的缓存清空

        NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

        NSFileManager *fileManager=[NSFileManager defaultManager];

        if ([fileManager fileExistsAtPath:path]) {

            NSArray *childerFiles=[fileManager subpathsAtPath:path];

            for (NSString *fileName in childerFiles) {

                //如有需要,加入条件,过滤掉不想删除的文件

                NSString *absolutePath=[path stringByAppendingPathComponent:fileName];

                [fileManager removeItemAtPath:absolutePath error:nil];

            }

        

            //清理缓存

           [[SDImageCache sharedImageCache] cleanDisk];

        

        }

    }

    

    self.alertView = nil;

}







#pragma mark - 清理缓存

- (void)clearCache{

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

    NSFileManager *fileManager=[NSFileManager defaultManager];

    

    float folderSize;

    if ([fileManager fileExistsAtPath:path]) {

        //拿到算有文件的数组

        NSArray *childerFiles = [fileManager subpathsAtPath:path];

        //拿到每个文件的名字,如有有不想清除的文件就在这里判断

        for (NSString *fileName in childerFiles) {

            //将路径拼接到一起

            NSString *fullPath = [path stringByAppendingPathComponent:fileName];

            folderSize += [self fileSizeAtPath:fullPath];

        }

        

        //        NSLog(@" 缓存文件大小 %f ",folderSize);

        

        self.alertView = [[UIAlertView alloc] initWithTitle:@"清理缓存" message:[NSString stringWithFormat:@"缓存大小为%.2fM,确定要清理缓存吗?", folderSize] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];

        [self.alertView show];

        

        

        self.alertView.delegate = self;

        

    }

}


#pragma mark - 计算单个文件夹的大小

-(float)fileSizeAtPath:(NSString *)path{

    

    

    

    NSFileManager *fileManager=[NSFileManager defaultManager];

    

    if([fileManager fileExistsAtPath:path]){

        

        long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;

        

        

        //SDWebImage框架自身计算缓存的实现

        size+=[[SDImageCache sharedImageCache] getSize];

        

         return size/1024.0/1024.0;

        

        

    }

    return 0;

}



你可能感兴趣的:(iOS)