ios获取缓存文件的大小,实现缓的清理功能
来源:互联网 发布:js math.floor 编辑:程序博客网 时间:2024/06/05 14:20
移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。
但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。
今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、删除缓存文件的实现。
获取缓存文件的大小
由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。
//
// CalculateFileSize.h
// CalculateCache
//
// Created by dengyanzhou on 15/3/6.
// Copyright (c) 2015年 mobby. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface CalculateFileSize :NSObject //单利
//类方法
+ (instancetype)defaultCalculateFileSize;
// 计算单个文件大小
- (float)fileSizeAtPath:(NSString*)path;
// 计算目录大小
- (float)folderSizeAtPath:(NSString*)path;
// 清除文件按
- (void)clearCache:(NSString *)path;
@end
//
// CalculateFileSize.m
// CalculateCache
//
// Created by dengyanzhou on 15/3/6.
// Copyright (c) 2015年 mobby. All rights reserved.
//
#import "CalculateFileSize.h"
@implementation CalculateFileSize
//单利
+ (instancetype)defaultCalculateFileSize
{
staticCalculateFileSize *calculateFileSize =nil;
@synchronized(self) {
if (!calculateFileSize) {
calculateFileSize = [[selfalloc]init];;
}
}
return calculateFileSize;
}
//计算单个文件大小返回值是M
- (float)fileSizeAtPath:(NSString *)path
{
NSFileManager *fileManager=[NSFileManagerdefaultManager];
if([fileManagerfileExistsAtPath:path]){
longlong size = [fileManager attributesOfItemAtPath:patherror:nil].fileSize;
// 返回值是字节 B K M
return size/1024.0/1024.0;
}
return0;
}
//计算目录大小
- (float)folderSizeAtPath:(NSString *)path
{
NSFileManager *fileManager = [NSFileManagerdefaultManager];
float folderSize;
if ([fileManagerfileExistsAtPath:path]) {
NSArray *childerFiles=[fileManagersubpathsAtPath:path];
for (NSString *fileNamein childerFiles) {
NSString *absolutePath = [pathstringByAppendingPathComponent:fileName];
// 计算单个文件大小
folderSize += [selffileSizeAtPath:absolutePath];
}
//SDWebImage框架自身计算缓存的实现
// folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
return folderSize;
}
return0;
}
//清理缓存文件
//同样也是利用NSFileManager API进行文件操作,SDWebImage框架自己实现了清理缓存操作,我们可以直接调用。
- (void)clearCache:(NSString *)path
{
NSFileManager *fileManager=[NSFileManagerdefaultManager];
if ([fileManagerfileExistsAtPath:path]) {
NSArray *childerFiles=[fileManagersubpathsAtPath:path];
for (NSString *fileNamein childerFiles) {
//如有需要,加入条件,过滤掉不想删除的文件
NSString *absolutePath = [pathstringByAppendingPathComponent:fileName];
[fileManager removeItemAtPath:absolutePatherror:nil];
}
}
// SDImageCache 自带缓存
//[[SDImageCache sharedImageCache] cleanDisk];
}
@end
// 主函数调用
//
// main.m
// CalculateCache
//
// Created by dengyanzhou on 15/3/6.
// Copyright (c) 2015年 mobby. All rights reserved.
//
#import "CalculateFileSize.h"
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[]) {
@autoreleasepool {
// insert code here..
CalculateFileSize *calculatefileSize = [CalculateFileSizedefaultCalculateFileSize];
NSString *path =@"/Users/developer/Desktop/c - c++ 学习计划.xlsx";
float filSize = [calculatefileSizefileSizeAtPath:path];
NSLog(@"文件大小为%fM" ,filSize);
}
return0;
}
- ios获取缓存文件的大小,实现缓的清理功能
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发 清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- iOS开发-清理缓存功能的实现
- 获取缓存的大小 以及清理缓存
- 获取缓存的大小并且清理缓存
- iOS获取缓存文件的大小并清除缓存
- 如何实现手机缓存清理的功能
- iOS清理缓存的简单实现
- iOS 缓存大小 清理
- 正则表达式(多行匹配,不以某某开头,不区分大小写,2个单元的或操作)
- 文通旅行社护照录入产品国际旅游展上受追捧
- WebService上传文件
- Java获取当前类名、方法名
- WPF Binding相关的一些常见方式总结(二)
- ios获取缓存文件的大小,实现缓的清理功能
- 光源选择
- 如何在生产订单增强中查看AFPO相关信息?
- Nginx开发从入门到精通(一):nginx平台初探
- android studio获取默认签名证书指纹数据
- MvcPager分页控件的使用
- LeetCode--Swap Nodes in Pairs
- Spring的配置文件实例
- DVWA平台的sql注入学习