iOS清除緩存(OC實現)

//清除緩存按鈕的點擊事件
- (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];
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章