iOS開發 - 清除緩存

//緩存

//  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

相關文章
相關標籤/搜索