这是获取缓存大小的方法,一般情况下,我们的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) {
// 如有需要,加入条件,过滤掉不想删除的文件
NSString *absolutePath=[path stringByAppendingPathComponent :fileName];
[fileManager removeItemAtPath :absolutePath error : nil ];
}
}
// 这个是清除 SDWebImage 的缓存的 , 没有引用这个第三方类库不用写
[[SDImageCache sharedImageCache] cleanDisk];
#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) {
// 如有需要,加入条件,过滤掉不想删除的文件
NSString *absolutePath=[path stringByAppendingPathComponent :fileName];
[fileManager removeItemAtPath :absolutePath error : nil ];
}
}
// 这个是清除 SDWebImage 的缓存的 , 没有引用这个第三方类库不用写
[[SDImageCache sharedImageCache] cleanDisk];
}