一般APP应用里都会有个清除缓存的功能,需要显示缓存文件夹的大小,并且可以清除缓存文件。
- (NSInteger)getFileSize:(NSString *)directoryPath{
/*
1. 获取文件夹路径
2. 遍历所有的子文件(不包括隐藏的文件和文件夹本身)
3. 计算每个子文件的大小并累加
*/
NSInteger fileSize = 0;
// 获取文件管理者
NSFileManager *fileMgr = [NSFileManager defaultManager];
// 获取所有子文件的路径
NSArray *subPaths = [fileMgr subpathsAtPath:directoryPath];
for (NSString *subPath in subPaths) {
// 拼接文件的全路径
NSString *path = [directoryPath stringByAppendingPathComponent:subPath];
// 判断是否为隐藏文件,真机中可注释此代码
if ([subPath containsString:@".DS"]) continue;
// 判断是否为文件夹
BOOL isDirectory;
BOOL isExist = [fileMgr fileExistsAtPath:path isDirectory:&isDirectory]; // 判断当前是否为文件夹,并且返回该文件夹是否存在
if (isDirectory || !isExist) continue; // 该文件是文件夹或者该文件夹不存在,则继续
// 获取文件尺寸
NSDictionary *attr = [fileMgr attributesOfItemAtPath:path error:nil];
// 计算文件的大小
fileSize += [attr fileSize];
}
return fileSize;
}