ios 清除一個app的緩存
首先應該獲取緩存路徑,然後計算緩存的總大小,最後在利用for循環,逐個刪除緩存文件夾裏面的文件
下面附上完整的代碼例子
//清除緩存按鈕的點擊事件
- (void)putBufferBtnClicked:(UIButton *)btn{
CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSTemporaryDirectory()];
NSString *message = size > 1 ? [NSString stringWithFormat:@"緩存%.2fM, 刪除緩存", size] : [NSString stringWithFormat:@"緩存%.2fK, 刪除緩存", size * 1024.0]; UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:message preferredStyle:(UIAlertControllerStyleAlert)];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"確定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {
[self cleanCaches];
}];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];
[alert addAction:action];
[alert addAction:cancel];
[self showDetailViewController:alert sender:nil];}
// 計算目錄大小-
-(CGFloat)folderSizeAtPath:(NSString *)path{
// 利用NSFileManager實現對文件的管理
NSFileManager *manager = [NSFileManager defaultManager];
CGFloat size = 0;
if ([manager fileExistsAtPath:path]) {
// 獲取該目錄下的文件,計算其大小
NSArray *childrenFile = [manager subpathsAtPath:path];
for (NSString *fileName in childrenFile) {
NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
size += [manager attributesOfItemAtPath:absolutePath error:nil].fileSize;
}
// 將大小轉化為M
return size / 1024.0 / 1024.0;
}
return 0;
}
// 根據路徑刪除文件
- (void)cleanCaches:(NSString *)path{
// 利用NSFileManager實現對文件的管理
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
// 獲取該路徑下面的文件名
NSArray *childrenFiles = [fileManager subpathsAtPath:path];
for (NSString *fileName in childrenFiles) {
// 拼接路徑
NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
// 將文件刪除
[fileManager removeItemAtPath:absolutePath error:nil];
}
}
ios 清除一個app的緩存