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

【iOS】获取缓存大小清除缓存的方法

2016-04-28 22:34 417 查看
这是获取缓存大小的方法,一般情况下,我们的iOS的APP的缓存都放在软件沙盒路径下的caches文件里,所以我们用系统的fileManager获得caches文件的大小就可以了///
#pragma mark -
下面两个获取文件大小的返回值都是数据类型,可以用NSString stringWithFormat转换成字符串
//单个文件的大小

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

   

}

#pragma mark -
清除缓存的方法
+(void)clearCache:(NSString
*)path{

    NSFileManager
*fileManager=[NSFileManager
defaultManager];

    if
([fileManager fileExistsAtPath:path]) {

        NSArray
*childerFiles=[fileManager
subpathsAtPath:path];

        for
(NSString
*fileName in
childerFiles) {

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

           
4000
NSString
*absolutePath=[path
stringByAppendingPathComponent:fileName];

            [fileManager removeItemAtPath:absolutePath
error:nil];

        }

    }

   

    //
这个是清除SDWebImage的缓存的,没有引用这个第三方类库不用写

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