利用到了xcode 系统的类NSFileManager
// 计算单个文件
- (float)fileSizeAtPath:(NSString *)path{ // path是要计算的文件的路径
NSFileManager *fileManager = [NSFileManager defaultManager];
if([fileManager fileExistsAtPath:path]){
long long size = [fileManager attributesOfItemAtPath:path error:nil].fileSize;
return size/1024.0/1024.0; // 显示多少兆(MB)
}
return 0;
}
<span style="font-size:18px;">// 计算目录大小
- (float)folderSizeAtPath:(NSString *)path{ // path 是文件夹的路径
NSFileManager *fileManager = [NSFileManager defaultManager];
float folderSize;
if ([fileManager fileExistsAtPath:path]) { // 判断是否存在这个文件夹
NSArray *childerFiles = [fileManager subpathsAtPath:path]; // 获取这个文件夹下的
所有文件名
for (NSString *fileName in childerFiles) {
NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
// 拼接成各个文件的路径, 然后计算各个文件的大小, 然后相加
folderSize += [self fileSizeAtPath:absolutePath];
}
//SDWebImage框架自身计算缓存的实现
folderSize += [[SDImageCache sharedImageCache] getSize] /1024.0/1024.0;
// NSLog(@"%.2f", folderSize);
return folderSize;
}
return 0;
}</span>
<span style="font-size:18px;">// 清理缓存文件
- (void)clearCache:(NSString *)path{ // 此处 的路径可以是caches的路径
NSFileManager *fileManager=[NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
NSArray *childerFiles=[fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles) {
//如有需要,加入条件,过滤掉不想删除的文件
// if ([fileName isEqualToString:@"OrangeAmusement"]) {
// break;
// }
NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
[fileManager removeItemAtPath:absolutePath error:nil];
}
}
[[SDImageCache sharedImageCache] cleanDisk];
}</span>