iOS开发清理缓存封装的类
2016-05-03 本文已影响234人
Courage_SC
CleanCaches.h
#import <Foundation/Foundation.h>
@interface CleanCaches : NSObject
//获取缓存路径
+ (NSString *)getCachesPath:(NSString *)fileName;
//计算单个文件大小的方法
+ (long long)fileSizeAtPath:(NSString *)path;
//计算一个文件夹大小
+ (float)folderSizeAtPath:(NSString *)path;
//清空缓存方法
+ (void)cleanCaches:(NSString *)path;
@end
CleanCaches.m
#import "CleanCaches.h"
@implementation CleanCaches
#pragma mark 获取缓存路径
+ (NSString *)getCachesPath:(NSString *)fileName
{
//获取完整路径
NSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
NSString *cachesPath = [path stringByAppendingPathComponent:fileName];
return cachesPath;
}
#pragma mark 计算单个文件大小的方法
+ (long long)fileSizeAtPath:(NSString *)path
{
//创建一个文件管理者
NSFileManager *manger = [NSFileManager defaultManager];
if ([manger fileExistsAtPath:path]) {
return [[manger attributesOfItemAtPath:path error:nil] fileSize];
}
return 0;
}
#pragma mark 计算一个文件夹大小
+ (float)folderSizeAtPath:(NSString *)path
{
//创建文件管理者
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:path]) {
return 0;
}
//根据路径获取文件夹里面的元素的集合
//获取集合类型的枚举器
NSEnumerator *enumerator = [[manager subpathsAtPath:path] objectEnumerator];
//每次遍历得到的文件名
NSString *fileName = [NSString string];
//文件夹大小
float folderSize = 0;
while ((fileName = [enumerator nextObject]) != nil) {
NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
folderSize += [self fileSizeAtPath:absolutePath];
}
return folderSize / (1024.0 * 1024.0);
}
#pragma mark 清空缓存方法
+ (void)cleanCaches:(NSString *)path
{
NSFileManager *manager = [NSFileManager defaultManager];
if ([manager fileExistsAtPath:path]) {
NSArray *fileNameArray = [manager subpathsAtPath:path];
for (NSString *fileName in fileNameArray) {
//拼接绝对路径
NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
//通过管理者删除文件
[manager removeItemAtPath:absolutePath error:nil];
}
}
}
@end
使用
[CleanCaches cleanCaches:[CleanCaches getCachesPath:@"Caches"]]; label.textColor = [UIColor colorWithRed:0.35 green:0.34 blue:0.39 alpha:1];
label.text = [NSString stringWithFormat:@"%.1fMB", [CleanCaches folderSizeAtPath:[CleanCaches getCachesPath:@"Caches"]]];