//緩存
// WBClearCacheTool.mdebug
// buybuyART調試
//orm
// Created by wangbin on 2018/1/26.rem
// Copyright © 2018年 ArtAlly Information Technology Co., Ltd. All rights reserved.get
//string
#import "WBClearCacheTool.h"it
#define fileManager [NSFileManager defaultManager]io
@implementation WBClearCacheToolform
//獲取path路徑下文件夾大小
+ (NSString *)getCacheSizeWithFilePath:(NSString *)path
{
//調試
#ifdef DEBUG
//若是文件夾不存在或者不是一個文件夾那麼就拋出一個異常
//拋出異常會致使程序閃退,因此只在調試階段拋出,發佈階段不要再拋了,否則極度影響用戶體驗
BOOL isDirectory = NO;
BOOL isExist = [fileManager fileExistsAtPath:path isDirectory:&isDirectory];
if (!isExist || !isDirectory)
{
NSException *exception = [NSException exceptionWithName:@"fileError" reason:@"please check your filePath!" userInfo:nil];
[exception raise];
}
NSLog(@"debug");
//發佈
#else
NSLog(@"release");
#endif
//獲取「path」文件夾下面的全部文件
NSArray *subpathArray= [fileManager subpathsAtPath:path];
NSString *filePath = nil;
NSInteger totleSize=0;
for (NSString *subpath in subpathArray)
{
//拼接每個文件的全路徑
filePath =[path stringByAppendingPathComponent:subpath];
//isDirectory,是不是文件夾,默認不是
BOOL isDirectory = NO;
//isExist,判斷文件是否存在
BOOL isExist = [fileManager fileExistsAtPath:filePath isDirectory:&isDirectory];
//判斷文件是否存在,不存在的話過濾
//若是存在的話,那麼是不是文件夾,是的話也過濾
//若是文件既存在又不是文件夾,那麼判斷它是否是隱藏文件,是的話也過濾
//過濾以上三個狀況後,就是一個文件夾裏面真實的文件的總大小
//以上判斷目的是忽略不須要計算的文件
if (!isExist || isDirectory || [filePath containsString:@".DS"]) continue;
//NSLog(@"%@",filePath);
//指定路徑,獲取這個路徑的屬性
//attributesOfItemAtPath:須要傳文件夾路徑
//可是attributesOfItemAtPath 只能夠得到文件屬性,不能夠得到文件夾屬性,這個也就是須要for-in遍歷文件夾裏面每個文件的緣由
NSDictionary *dict= [fileManager attributesOfItemAtPath:filePath error:nil];
NSInteger size=[dict[@"NSFileSize"] integerValue];
totleSize+=size;
}
//將文件夾大小轉換爲 M/KB/B
NSString *totleStr = nil;
if (totleSize > 1000 * 1000)
{
totleStr = [NSString stringWithFormat:@"%.1fM",totleSize / 1000.0f /1000.0f];
}else if (totleSize > 1000)
{
totleStr = [NSString stringWithFormat:@"%.1fKB",totleSize / 1000.0f ];
}else
{
totleStr = [NSString stringWithFormat:@"%.1fB",totleSize / 1.0f];
}
return totleStr;
}
//清除path文件夾下緩存大小
+ (BOOL)clearCacheWithFilePath:(NSString *)path
{
//拿到path路徑的下一級目錄的子文件夾
NSArray *subpathArray = [fileManager contentsOfDirectoryAtPath:path error:nil];
NSError *error;
NSString *filePath;
for (NSString *subpath in subpathArray)
{
if (![subpath isEqualToString:@"Snapshots"])//這個文件無訪問權限
{
filePath =[path stringByAppendingPathComponent:subpath];
//刪除子文件夾
[fileManager removeItemAtPath:filePath error:&error];
if (error) {
NSLog(@"%@",[NSString stringWithFormat:@"清理文件夾失敗路徑:%@",filePath]);
[MyHUD showInView:ShareApp.window text:@"清理緩存失敗"];
return NO;
}else{
NSLog(@"%@",[NSString stringWithFormat:@"清除文件夾成功路徑:%@",filePath]);
}
}
}
[MyHUD showInView:ShareApp.window text:@"清理緩存成功"];
NSLog(@"清理緩存成功");
// AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);//手機震動
return YES;
}
@end