iOS開發-清理快取功能的實現

weixin_34236869發表於2016-07-15

移動應用在處理網路資源時,一般都會做離線快取處理,其中以圖片快取最為典型。

今天介紹的離線快取功能的實現,主要分為快取檔案大小的獲取、刪除快取檔案的實現。

路徑巨集#define LHCCachesPath [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]

計算檔案大小-(float)fileSizeAtPath:(NSString*)path{

NSFileManager*fileManager=[NSFileManagerdefaultManager];

if([fileManagerfileExistsAtPath:path]){

longlongsize=[fileManagerattributesOfItemAtPath:patherror:nil].fileSize;

returnsize/1024.0/1024.0;

}

return0;

}


計算目錄大小

- (CGFloat)floatWithPath:(NSString*)path{

NSFileManager*fileManager=[NSFileManagerdefaultManager];

floatfolderSize;

if([fileManagerfileExistsAtPath:path]) {

NSArray*childerFiles = [fileManagersubpathsAtPath:path];

for(NSString*fileNameinchilderFiles) {

NSString*fullPath = [pathstringByAppendingPathComponent:fileName];

folderSize += [selffileSizeAtPath:fullPath];

}

}

returnfolderSize;

}


計算好檔案目錄大小之後賦值給self.garbage

- (void)getFolderSizeBk

{

floatfolderSize = [self floatWithPath:LHCCachesPath];

self.garbage= [NSStringstringWithFormat:@"%.2fM",folderSize];

[self.tableViewreloadData];

}

清除快取大小,這個是我的寫的alert的點選事件

1385189-a3f4c03e571c7184.png
1385189-ce75d82e8095b19c.png

- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

if(buttonIndex) {

NSString*path =LHCCachesPath;

NSFileManager*fileManager=[NSFileManagerdefaultManager];

if([fileManagerfileExistsAtPath:path]) {

NSArray*childerFiles=[fileManagersubpathsAtPath:path];

for(NSString*fileNameinchilderFiles) {

NSString*absolutePath=[pathstringByAppendingPathComponent:fileName];

[fileManagerremoveItemAtPath:absolutePatherror:nil];

}

}

[selfgetFolderSizeBk];

}

}


以上就是計算快取和清除快取的程式碼了,附上幾張圖


1385189-d51e1f56530a3687.png

相關文章