Object-C_App緩存計算&刪除

Object-C 計算緩存大小

//計算緩存大小
- (CGFloat)calculateCache{
    CGFloat folderSize = 0;
    //獲取路徑
    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)firstObject];
    //獲取所有文件的數(shù)組
    NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachePath];
    NSLog(@"文件數(shù):%ld",files.count);
    for(NSString *path in files) {
        NSString*filePath = [cachePath stringByAppendingString:[NSString stringWithFormat:@"/%@",path]];
        //累加
        folderSize += [[NSFileManager defaultManager]attributesOfItemAtPath:filePath error:nil].fileSize;
    }
    //轉(zhuǎn)換為M為單位
    CGFloat sizeM = folderSize /1024.0/1024.0;
    return sizeM;
}

//清除緩存
- (void)removeCache{
    //獲取路徑
    NSString*cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)objectAtIndex:0];
    //返回路徑中的文件數(shù)組
    NSArray*files = [[NSFileManager defaultManager]subpathsAtPath:cachePath];
    NSLog(@"文件數(shù):%ld",[files count]);
    for(NSString *p in files){
        NSError*error;
        NSString*path = [cachePath stringByAppendingString:[NSString stringWithFormat:@"/%@",p]];
        if([[NSFileManager defaultManager]fileExistsAtPath:path]) {
            BOOL isRemove = [[NSFileManager defaultManager]removeItemAtPath:path error:&error];
            if(isRemove) {
                NSLog(@"清除成功");
            } else {
                NSLog(@"清除失敗");
            } 
        }
    }
}

Swift計算緩存

//統(tǒng)計緩存文件大小
func fileSizeOfCache()-> Int {
    // 取出cache文件夾目錄 緩存文件都在這個目錄下 -->緩存目錄路徑
    let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first
    print(cachePath)
    // 取出文件夾下所有文件數(shù)組
    let fileArr = FileManager.default.subpaths(atPath: cachePath!)
    //快速枚舉出所有文件名 計算文件大小
    var size = 0
    for file in fileArr! {
        // 把文件名拼接到路徑中
        let path = cachePath?.appending("/\(file)")
        // 取出文件屬性
        let floder = try! FileManager.default.attributesOfItem(atPath: path!)
        // 用元組取出文件大小屬性
        for (abc, bcd) in floder {
            // 累加文件大小
            if abc == FileAttributeKey.size {
                size += (bcd as AnyObject).integerValue
            }
        }
    }
    let mm = size / 1024 / 1024
    return mm
}

//刪除緩存文件
func clearCache() {
    // 取出cache文件夾目錄 緩存文件都在這個目錄下
    let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first
    
    // 取出文件夾下所有文件數(shù)組
    let fileArr = FileManager.default.subpaths(atPath: cachePath!)
    
    // 遍歷刪除
    for file in fileArr! {
        let path = cachePath?.appending("/\(file)")
        if FileManager.default.fileExists(atPath: path!) {
            do {
                try FileManager.default.removeItem(atPath: path!)
            } catch {
                
            }
        }
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文為菜鳥窩作者蔣志碧的連載。“從 0 開始開發(fā)一款直播 APP ”系列來聊聊時下最火的直播 APP,如何完整的實...
    菜鳥窩閱讀 858評論 0 11
  • 設(shè)置界面?中清除緩存的處理---** 每個App幾乎都有清除緩存的功能** 一 手機上的磁盤緩存 == 從網(wǎng)絡(luò)上下...
    Tuberose閱讀 4,885評論 12 119
  • App后期優(yōu)化必須要考慮的問題——緩存。App基本功能——清除緩存。最近在做清除緩存的功能,所以好好研究了一下。這...
    墨痕未干閱讀 2,197評論 0 14
  • 第二天一早,白甘霖就打算去拜訪拜訪那個兇手 一出門,就看見李越澤穿著新衣服得意的走來走去,不知道怎么弄的,還給自己...
    霽小夏閱讀 276評論 0 3
  • “世界那么大,我想去看看”風靡一時的自我宣言。但智者言,如果要辭職要改變現(xiàn)狀,才會有的,那不是真的實現(xiàn)夢想,有可能...
    雪中凝閱讀 265評論 0 0

友情鏈接更多精彩內(nèi)容