第一步:
Snip20161031_5.png第二步:
Snip20161031_6.png第三步:
Snip20161031_7.png#import <Foundation/Foundation.h>
@interface NSString (LYWExtension)
- (unsigned long long)fileSize;
@end
第四步:
Snip20161031_14.png#import "NSString+LYWExtension.h"
@implementation NSString (LYWExtension)
- (unsigned long long)fileSize
{
// 总大小
unsigned long long size = 0;
// 文件管理者
NSFileManager *mgr = [NSFileManager defaultManager];
// 是否为文件夹
BOOL isDirectory = NO;
// 路径是否存在
BOOL exists = [mgr fileExistsAtPath:self isDirectory:&isDirectory];
if (!exists) return size;
if (isDirectory) { // 文件夹
// 获得文件夹的大小 == 获得文件夹中所有文件的总大小
NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:self];
for (NSString *subpath in enumerator) {
// 全路径
NSString *fullSubpath = [self stringByAppendingPathComponent:subpath];
// 累加文件大小
size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;
}
} else { // 文件
size = [mgr attributesOfItemAtPath:self error:nil].fileSize;
}
return size;
}
@end
初步简单使用
Snip20161031_13.png效果:
regi.gif
我们打开沙河查看文件大小,对比。
Snip20161031_15.png下面我们就让它显示成多少M 多少G
Snip20161031_17.pngSnip20161031_18.png
清除缓存
Snip20161031_19.png代码附上
#import "SsrtextViewController.h"
#import "NSString+LYWExtension.h"
#import "SVProgressHUD.h"
#import "SDImageCache.h"
@interface SsrtextViewController ()
@property (strong, nonatomic)UILabel *lab;
@end
@implementation SsrtextViewController
- (void)viewDidLoad
{
[super viewDidLoad];
_lab = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 300, 100)];
_lab.backgroundColor = RandomColor;
_lab.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:_lab];
_lab.text = @"清除缓存(正在计算缓存大小...)";
// 在子线程计算缓存大小
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// 获得缓存文件夹路径(这个是我们自己的缓存文件)
unsigned long long size = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"Custom"].fileSize;
//这个是SDWebImage缓存的文件
size += [SDImageCache sharedImageCache].getSize;
NSString *sizeText = nil;
if (size >= pow(10, 9)) { // size >= 1GB
sizeText = [NSString stringWithFormat:@"%.2fGB", size / pow(10, 9)];
} else if (size >= pow(10, 6)) { // 1GB > size >= 1MB
sizeText = [NSString stringWithFormat:@"%.2fMB", size / pow(10, 6)];
} else if (size >= pow(10, 3)) { // 1MB > size >= 1KB
sizeText = [NSString stringWithFormat:@"%.2fKB", size / pow(10, 3)];
} else { // 1KB > size
sizeText = [NSString stringWithFormat:@"%zdB", size];
}
//下面也是一种换算文件大小的方式
// if (size >= 1000 * 1000 * 1000) { // size >= 1GB
// sizeText = [NSString stringWithFormat:@"%.2fGB", size / 1000.0 / 1000.0 / 1000.0];
// } else if (size >= 1000 * 1000) { // 1GB > size >= 1MB
// sizeText = [NSString stringWithFormat:@"%.2fMB", size / 1000.0 / 1000.0];
// } else if (size >= 1000) { // 1MB > size >= 1KB
// sizeText = [NSString stringWithFormat:@"%.2fKB", size / 1000.0];
// } else { // 1KB > size
// sizeText = [NSString stringWithFormat:@"%zdB", size];
// }
// 生成文字
NSString *text = [NSString stringWithFormat:@"清除缓存(%@)", sizeText];
// 回到主线程
dispatch_async(dispatch_get_main_queue(), ^{
// 设置文字
_lab.text = text;
// 添加手势监听器
[_lab addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clearCache)]];
});
});
}
/**
* 清除缓存
*/
- (void)clearCache
{
// 弹出指示器
[SVProgressHUD showInfoWithStatus:@"正在清除缓存..."];
// 删除SDWebImage的缓存
[[SDImageCache sharedImageCache] clearDiskOnCompletion:^{
// 删除自定义的缓存
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//文件管理者
NSFileManager *mgr = [NSFileManager defaultManager];
//移除该文件夹
[mgr removeItemAtPath:[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"Custom"] error:nil];
//再创建该文件夹
[mgr createDirectoryAtPath:[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"Custom"] withIntermediateDirectories:YES attributes:nil error:nil];
// 所有的缓存都清除完毕
dispatch_async(dispatch_get_main_queue(), ^{
// 隐藏指示器
[SVProgressHUD dismiss];
// 设置文字
_lab.text = @"清除缓存(0B)";
});
});
}];
}
我们再来对比看一下
Snip20161031_22.png备注:(如果有需要封装的文件,可联系我,我已经教大家封装了,其实复制过去也很快)如果您嫌麻烦那就去github下载Dome:https://github.com/LYWGod/fileSize
如果有不足或者错误的地方还望各位读者批评指正,可以评论留言,笔者收到后第一时间回复。
QQ/微信:2366889552 /lan2018yingwei。
简书号:凡尘一笑:[简书]
http://www.jianshu.com/users/0158007b8d17/latest_articles
感谢各位观众老爷的阅读,如果觉得笔者写的还凑合,可以关注或收藏一下,不定期分享一些好玩的实用的demo给大家。
文/凡尘一笑(简书作者)
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
网友评论