您的位置:首页 > 移动开发 > IOS开发

iOS 计算缓存大小以及清理缓存

2016-08-24 09:40 381 查看
//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);

    

}

- (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];

            

        }

        

    }

    [ self
performSelectorOnMainThread :
@selector (clearCachSuccess)
withObject :nil
waitUntilDone : YES ];

    

}

- ( void )clearCachSuccess

{

    

    NSLog (
@" 清理成功 " );

    

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

    

    [alertView show ];

    

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

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: