摘要://拿到要清理的路径,其实就是caches的路径,一般像这种很多地方都会用到的地方真好搞成宏,不过现在苹果不提倡用宏了//在swift中可以定义成全局的常量//遍历caches,将内部的文件大小计算出来,点击确认删除的话直接删除全部文件,如果有不想清理的文件,可以在遍历文件时根据路径过滤掉{NSString*path=WNXCachesPath;NSFileManager*fileManager=
//拿到要清理的路径,其实就是caches的路径,一般像这种很多地方都会用到的地方真好搞成宏,不过现在苹果不提倡用宏了
//在swift中可以定义成全局的常量
//遍历caches,将内部的文件大小计算出来,点击确认删除的话直接删除全部文件,如果有不想清理的文件,可以在遍历文件时根据路径过滤掉
{
NSString *path =WNXCachesPath;
NSFileManager *fileManager=[NSFileManager defaultManager];
floatfolderSize;
if([fileManager fileExistsAtPath:path]) {
//拿到算有文件的数组
NSArray *childerFiles =[fileManager subpathsAtPath:path];
//拿到每个文件的名字,如有有不想清除的文件就在这里判断
for (NSString *fileName inchilderFiles) {
//将路径拼接到一起
NSString *fullPath =[path stringByAppendingPathComponent:fileName];
folderSize +=[self fileSizeAtPath:fullPath];
}
self.alertView = [[UIAlertView alloc] initWithTitle:@"清理缓存" message:[NSString stringWithFormat:@"缓存大小为%.2fM,确定要清理缓存吗?", folderSize] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[self.alertView show];
self.alertView.delegate =self;
}
}
1 #pragma mark UIAlertViewDelegate
2 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
3 {
4 if(buttonIndex) {
5 //点击了确定,遍历整个caches文件,将里面的缓存清空
6 NSString *path =WNXCachesPath;
7 NSFileManager *fileManager=[NSFileManager defaultManager];
8 if([fileManager fileExistsAtPath:path]) {
9 NSArray *childerFiles=[fileManager subpathsAtPath:path];
10 for (NSString *fileName inchilderFiles) {
11 //如有需要,加入条件,过滤掉不想删除的文件
12 NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
13 [fileManager removeItemAtPath:absolutePath error:nil];
14 }
15 }
16 }
17
18 self.alertView =nil;
19 }
20
21 //计算单个文件夹的大小
22 -(float)fileSizeAtPath:(NSString *)path{
23
24 NSFileManager *fileManager=[NSFileManager defaultManager];
25
26 if([fileManager fileExistsAtPath:path]){
27
28 long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
29
30 return size/1024.0/1024.0;
31 }
32 return 0;
33 }