【iOS開發(fā)筆記】清理緩存這種東西寫個(gè)工具類比較好

手機(jī)上app的實(shí)際文件夾路徑還是蠻多的,有些應(yīng)該是不提倡刪除的,不過(guò)像是一些緩存什么的幌缝,清理一下還是必要的,用到的一些第三方類庫(kù)如果存在自動(dòng)緩存的诫欠,也會(huì)提供相應(yīng)的清理和計(jì)算方法涵卵。

下面就直接封裝一下吧:

.h文件
.h文件封裝兩個(gè)方法出來(lái)

/*s*
 *  獲取path路徑下文件夾的大小
 *
 *  @param path 要獲取的文件夾 路徑
 *
 *  @return 返回path路徑下文件夾的大小
 */
+ (NSString *)getCacheSizeWithFilePath:(NSString *)path;

/**
 *  清除path路徑下文件夾的緩存
 *
 *  @param path  要清除緩存的文件夾 路徑
 *
 *  @return 是否清除成功
 */
+ (BOOL)clearCacheWithFilePath:(NSString *)path;

.m文件
.m文件來(lái)實(shí)現(xiàn)具體方法,老規(guī)矩還是用什么寫什么

#pragma mark - 獲取path路徑下文件夾大小
+ (NSString *)getCacheSizeWithFilePath:(NSString *)path{
    
    // 獲取“path”文件夾下的所有文件
    NSArray *subPathArr = [[NSFileManager defaultManager] subpathsAtPath:path];
    
    NSString *filePath  = nil;
    NSInteger totleSize = 0;
    
    for (NSString *subPath in subPathArr){
        
        // 1. 拼接每一個(gè)文件的全路徑
        filePath =[path stringByAppendingPathComponent:subPath];
        // 2. 是否是文件夾荒叼,默認(rèn)不是
        BOOL isDirectory = NO;
        // 3. 判斷文件是否存在
        BOOL isExist = [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDirectory];
        
        // 4. 以上判斷目的是忽略不需要計(jì)算的文件
        if (!isExist || isDirectory || [filePath containsString:@".DS"]){
            // 過(guò)濾: 1. 文件夾不存在  2. 過(guò)濾文件夾  3. 隱藏文件
            continue;
        }
        
        // 5. 指定路徑轿偎,獲取這個(gè)路徑的屬性
        NSDictionary *dict = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
        /**
         attributesOfItemAtPath: 文件夾路徑
         該方法只能獲取文件的屬性, 無(wú)法獲取文件夾屬性, 所以也是需要遍歷文件夾的每一個(gè)文件的原因
         */
        
        // 6. 獲取每一個(gè)文件的大小
        NSInteger size = [dict[@"NSFileSize"] integerValue];
        
        // 7. 計(jì)算總大小
        totleSize += size;
    }
    
    //如果有第三方框架
    //SDWebImage框架自身計(jì)算緩存的實(shí)現(xiàn)
//    totleSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
    totleSize += [[SDImageCache sharedImageCache] getSize];
    
    //8. 將文件夾大小轉(zhuǎn)換為 M/KB/B
    NSString *totleStr = nil;
    
    if (totleSize > 1000 * 1000){
        totleStr = [NSString stringWithFormat:@"%.2fM",totleSize / 1000.00f /1000.00f];
        
    }else if (totleSize > 1000){
        totleStr = [NSString stringWithFormat:@"%.2fKB",totleSize / 1000.00f ];
        
    }else{
        totleStr = [NSString stringWithFormat:@"%.2fB",totleSize / 1.00f];
    }
    
    return totleStr;
}


#pragma mark - 清除path文件夾下緩存大小
+ (BOOL)clearCacheWithFilePath:(NSString *)path{
    
    //拿到path路徑的下一級(jí)目錄的子文件夾
    NSArray *subPathArr = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
    
    NSString *filePath = nil;
    
    NSError *error = nil;
    
    for (NSString *subPath in subPathArr)
    {
        filePath = [path stringByAppendingPathComponent:subPath];
        
        //刪除子文件夾
        [[NSFileManager defaultManager] removeItemAtPath:filePath error:&error];
        if (error) {
            return NO;
        }
    }
    //第三方框架
    [[SDImageCache sharedImageCache] clearDiskOnCompletion:nil];
    [[SDImageCache sharedImageCache] clearMemory];
    
    //網(wǎng)易七魚的緩存清理
    [[QYSDK sharedSDK] cleanResourceCacheWithBlock:^(NSError *error) {
        
    }];
    
    return YES;
}

使用
用起來(lái)還是很簡(jiǎn)單的,導(dǎo)入工具類被廓,寫好要清理的路徑做參數(shù)傳過(guò)去就好了坏晦。

//獲取路徑
//Document
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
//library
NSString *libraryPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];
//library-caches
NSString *cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];

[ClearCacheTool getCacheSizeWithFilePath:path]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昆婿,更是在濱河造成了極大的恐慌间护,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挖诸,死亡現(xiàn)場(chǎng)離奇詭異汁尺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)多律,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門痴突,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人狼荞,你說(shuō)我怎么就攤上這事辽装。” “怎么了相味?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拾积,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我丰涉,道長(zhǎng)拓巧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任一死,我火速辦了婚禮肛度,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘投慈。我一直安慰自己承耿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布伪煤。 她就那樣靜靜地躺著加袋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抱既。 梳的紋絲不亂的頭發(fā)上职烧,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音蝙砌,去河邊找鬼阳堕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛择克,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播前普,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼肚邢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起骡湖,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤贱纠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后响蕴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谆焊,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年浦夷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辖试。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劈狐,死狀恐怖罐孝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肥缔,我是刑警寧澤莲兢,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站续膳,受9級(jí)特大地震影響改艇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坟岔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一遣耍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧炮车,春花似錦舵变、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扛或,卻和暖如春绵咱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背熙兔。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工悲伶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人住涉。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓麸锉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親舆声。 傳聞我的和親對(duì)象是個(gè)殘疾皇子花沉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)柳爽、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評(píng)論 4 62
  • 1碱屁、編輯/etc/apt/sources.list 在文件最后加 # Debian 8 "Jessie" deb ...
    月落清歡閱讀 1,116評(píng)論 0 1
  • 摔跤名模兒被稱贊實(shí)屬親媽邏輯 “奚夢(mèng)瑤維秘舞臺(tái)摔跤成熱搜磷脯,名模兒摔跤后仍能笑著站起來(lái),保持微笑繼續(xù)走秀娩脾,贏得廣大網(wǎng)...
    小小童話閱讀 299評(píng)論 0 1