通常用于删除缓存的时,计算缓存大小

//单个文件的大小
  1. - (long long) fileSizeAtPath:(NSString*) filePath{
  2. NSFileManager* manager = [NSFileManager defaultManager];
  3. if ([manager fileExistsAtPath:filePath]){
  4. return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
  5. }
  6. return 0;
  7. }
//遍历文件夹获得文件夹大小,返回多少M
  1. - (float ) folderSizeAtPath:(NSString*) folderPath{
  2. NSFileManager* manager = [NSFileManager defaultManager];
  3. if (![manager fileExistsAtPath:folderPath]) return 0;
  4. NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
  5. NSString* fileName;
  6. long long folderSize = 0;
  7. while ((fileName = [childFilesEnumerator nextObject]) != nil){
  8. NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
  9. folderSize += [self fileSizeAtPath:fileAbsolutePath];
  10. }
  11. return folderSize/(1024.0*1024.0);
  12. }

遍历出Caches目录的所有文件大小

  1. - (void)fileSize{
  2.  
  3. NSFileManager *manager = [NSFileManager defaultManager];
  4. NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
  5.  
  6. NSArray *files = [manager subpathsOfDirectoryAtPath:cachePath error:nil]; // 递归所有子路径
  7.  
  8. NSInteger totalSize = 0;
  9.  
  10. for (NSString *filePath in files) {
  11. NSString *path = [cachePath stringByAppendingPathComponent:filePath];
  12. // 判断是否为文件
  13. BOOL isDir = NO;
  14. [manager fileExistsAtPath:path isDirectory:&isDir];
  15. if (!isDir) {
  16. NSDictionary *attrs = [manager attributesOfItemAtPath:path error:nil];
  17. totalSize += [attrs[NSFileSize] integerValue];
  18. }
  19. }
  20.  
  21. NSLog(@"%d",totalSize);
  22.  
  23. }

SDImageCache计算缓存方法

  1. - (NSUInteger)getSize {
  2. __block NSUInteger size = 0;
  3. dispatch_queue_t ioQueue = dispatch_queue_create("com.hackemist.SDWebImageCache", DISPATCH_QUEUE_SERIAL);
  4. dispatch_sync(ioQueue, ^{
  5. NSDirectoryEnumerator *fileEnumerator = [_fileManager enumeratorAtPath:self.diskCachePath];
  6. for (NSString *fileName in fileEnumerator) {
  7. NSString *filePath = [self.diskCachePath stringByAppendingPathComponent:fileName];
  8. NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
  9. size += [attrs fileSize];
  10. }
  11. });
  12. return size;
  13. }

删除缓存

//单文件

  1. -(void)cleanDisk{
  2. NSFileManager *defaultManager = [NSFileManager defaultManager];
  3. [defaultManager removeItemAtPath:self.diskCachePath error:nil];
  4. }

多文件

  1. -(void)cleanDisk{
  2. dispatch_async(
  3. dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
  4. , ^{
  5. NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];
  6.  
  7. NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];
  8. NSLog(@"files :%d",[files count]);
  9. for (NSString *p in files) {
  10. NSError *error;
  11. NSString *path = [cachPath stringByAppendingPathComponent:p];
  12. if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
  13. [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
  14. }
  15. }
  16. [self performSelectorOnMainThread:@selector(clearCacheSuccess) withObject:nil waitUntilDone:YES];
  17.  
  18. }
  19.  
  20. -(void)clearCacheSuccess
  21. {
  22. NSLog(@"清理成功");
  23. }

获取缓存文件大小并清理 By HL的更多相关文章

  1. SDWebimage如何获取缓存大小以及清除缓存

    sdwebimage如何获取缓存大小以及清除缓存 1.找到SDImageCache类 2.添加如下方法: - (float)checkTmpSize {    float totalSize = 0; ...

  2. 计算缓存文件大小、清除缓存的Cell

    计算缓存文件大小 - (void)getCacheSize { // 总大小 unsigned long long size = 0; // 获得缓存文件夹路径 NSString *cachesPat ...

  3. php获取远程文件大小

    获取本地文件大小filesize()就可以了,但是如何获取远程文件的大小呢? 这里介绍三个方法来获取远程文件的大小. 方法1:get_headers <?php get_headers($url ...

  4. APICloud 获取缓存以及清除缓存(常用第三方方法)

    一.app中经常会有缓存的清除这个操作,具体如下 1.获取缓存大小 apiready = function() { api.getCacheSize(function(ret, err) { //si ...

  5. thinkphp 清理runtime缓存的方法, 清理指定目录

    https://blog.csdn.net/qq_22823581/article/details/79081497 hinkphp 清理runtime缓存的方法, 清理指定目录 function d ...

  6. selenium获取缓存数据

    爬虫呢有时候数据方便有时候登入获得cookies,以及获取他存缓存中的数据 一.获取缓存中的数据其实很简单js注入就好了 localStorage_1 = driver.execute_script( ...

  7. Redis获取缓存异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX

    Redis获取缓存异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX. 出现这种异常,我需要自 ...

  8. Android开发——获取应用数据/缓存大小并清理缓存

    1. 获取应用数据/缓存大小 其中pm为实例化的PackageManager,因为需要遍历所有的已安装的应用.因此需要开启子线程进行处理. 还有需要注意的是,在Android4.2之前getPacka ...

  9. Xcode计算缓存文件大小和清除缓存

    //获得缓存路径 self.cachesPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, ...

随机推荐

  1. Oracle 查询NULL字段/空字符串

    简单记录一下: 工作中需要查询某个字段值为空的数据, 最开始查询的时候按照以前的思路 : 1.where 字段名=NULL,点击F8,未查到结果: 2.where 字段名='',点击F8,未查到结果: ...

  2. spring boot 单元测试 --- 在测试类使用 javabean注解操作接口

    1.依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  3. 第10组 Alpha冲刺 (6/6)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14008187.html ·作业博客:https://edu.cnblogs.co ...

  4. SQL高级优化(四)之SQL优化

    SQL优化 一.SQL优化简介 解释:对于特定的要求,使用更有的SQL策略或索引策略,以达到让结果呈现的时间更短,从而提升操作效率的过程就是SQL优化. SQL优化包含在数据库级别优化中.我们平常所说 ...

  5. js对象数组多字段排序

    来源:js对象数组按照多个字段进行排序 一.数组排序 Array.sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序. 一般用法:(数组元素从小大进行排序) var a = ...

  6. 多线程的libcurl的使用

    摘要:libcurl在多线程中,采用https访问,经常运行一段时间,会出现crash. libcurl的在多线程中的使用特别注意的有两点: 1. curl的句柄不能多线程共享. 2. ssl访问时, ...

  7. .NET下如何拦截鼠标、键盘消息?Win32NET来帮你

    Win32NET是一个Win32API的.NET下封装的类库,包含: 1: 常用win32的API的net封装 2:鼠标.键盘.热键hook钩子模块, 3:模拟键盘输入文字(支持各种字符文字.不同语言 ...

  8. Python向mysql数据库插入数据

    一.向表tcolor中插入数据的主要流程如下: import datetimeimport pymysql.cursorsconnection = pymysql.connect(host='loca ...

  9. python 爬虫爬取历年双色球开奖信息

    目前写的这些爬虫都是些静态网页,对于一些高级网页(像经过JS渲染过的页面),目前技术并不能解决,自己也是在慢慢学习过程中,如有错误,欢迎指正: 对面前端知识本人并不懂,过程中如果涉及到前端知识,也是百 ...

  10. 机器学习-softmax回归 python实现

    ---恢复内容开始--- Softmax Regression 可以看做是 LR 算法在多分类上的推广,即类标签 y 的取值大于或者等于 2. 假设数据样本集为:$\left \{ \left ( X ...