移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型。
今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、删除缓存文件的实现。
路径宏#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的点击事件
- (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];
}
}
以上就是计算缓存和清除缓存的代码了,附上几张图