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];       

}  

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM