iOS开发-清理缓存功能的实现

移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型。

今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、删除缓存文件的实现。

路径宏#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的点击事件

iOS开发-清理缓存功能的实现_第1张图片
iOS开发-清理缓存功能的实现_第2张图片

- (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];

}

}


以上就是计算缓存和清除缓存的代码了,附上几张图


iOS开发-清理缓存功能的实现_第3张图片

你可能感兴趣的:(iOS开发-清理缓存功能的实现)