iOS拓展-手动清除缓存

2016-07-27  本文已影响61人  Jaesun

1. 计算缓存路径下的文件大小

#pragma mark 计算 path路径 下的缓存大小
- (float)checkTmpSizeWithFilePath:(NSString *)path
{
    float totalSize = 0;
    NSDirectoryEnumerator *fileEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:path];
    for (NSString *fileName in fileEnumerator)
    {
        NSString *filePath = [path stringByAppendingPathComponent:fileName];
        
        NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
        
        unsigned long long length = [attrs fileSize];
        totalSize += length / 1024.0 / 1024.0;
    }
    // NSLog(@"tmp size is %.2f",totalSize);
    return totalSize;
}

2.清除缓存文件夹下的文件

#pragma mark 清除 path路径下的缓存
- (void)clearCacheWithFilePath:(NSString *)path {
    
   // [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    
    // 文件管理
    NSFileManager *flieManager = [NSFileManager defaultManager];
    
    // NSDirectoryEnumerator 枚举了某个目录的内容,返回所有文件和目录的路径名中包含该目录。这些路径名是相对于目录
    NSDirectoryEnumerator *fileEnumerator = [flieManager enumeratorAtPath:path];
    
    for (NSString *fileName in fileEnumerator)
    {
        // 文件路径
        NSString *filePath = [path stringByAppendingPathComponent:fileName];
        // 删除文件
        [flieManager removeItemAtPath:filePath error:nil];

        NSLog(@"filePath is --%@",filePath);
    }
}

3.清除触发事件

{
  // 缓存路径(根据自己APP的缓存路径更改)
   NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
            
   CGFloat fileSize = [self checkTmpSizeWithFilePath:filePath];
   NSString *mesge = 1 <= fileSize ? [NSString stringWithFormat:@"清理缓存(%.2fM)",fileSize] : [NSString stringWithFormat:@"清理缓存(%.2fK)",fileSize * 1024];
   UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"清除缓存" message:mesge preferredStyle:(UIAlertControllerStyleAlert)];
   UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"清除" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
   [self clearCacheWithFilePath:filePath];
                }];
   UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
                }];
   [alertC addAction:sureAction];
   [alertC addAction:cancelAction];
   [self.navigationController presentViewController:alertC animated:YES completion:nil];
}
上一篇下一篇

猜你喜欢

热点阅读