SDWebImage框架中在自动做磁盘缓存的过程中,底层实现了计算Cache的大小,框架的方法名称是getSize,但方法不容易被人理解,我就从新写了一下,附带注释

基本思想: 1. 先取出的Cache,获取该文件的路径

2. 利用NSFileManager,取出该文件下的所有子路径返回一个数组

      3.遍历数组,利用文件的fileSize属性,把每个子路径下文件的取出来累加,即为该文件夹的大小

注意: 注意文件夹的隐藏文件,会使得到的文件大小出现偏差

得到的大小为B,若是在苹果手机中,需转化M(需要除去(1000.0 * 1000.0))

// 获取cache文件夹路径

NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];

// 创建文件管理者单粒(要想管理文件,必须使用NSFileManager)

NSFileManager *mgr = [NSFileManager defaultManager];

// 获取文件夹所有子路径数组:获取多级目录下文件路径

NSArray *subpaths = [mgr subpathsAtPath:cachePath];

// 遍历

int totalSize = 0;

for (NSString *subPath in subpaths) {

    //拼接每一条子路径

NSString *filePath = [cachePath stringByAppendingPathComponent:subPath];

// 判断是否是隐藏文件(.DS为苹果中的一种隐藏文件),若是隐藏文件,跳过该次执行,进入下次执行

if ([filePath containsString:@".DS"]) continue;

// 判断是否是文件夹

BOOL isDirectory = NO;

  //如果文件不存在或者为文件夹,就跳过

BOOL isExists = [mgr fileExistsAtPath:filePath isDirectory:&isDirectory];

if (!isExists || isDirectory) continue;

// 获取文件属性(利用文件的fileSize属性)

NSDictionary *attr = [mgr attributesOfItemAtPath:filePath error:nil];

totalSize += [attr fileSize];

iOS中计算磁盘缓存文件夹的大小的更多相关文章

  1. Linux中如何查看文件夹的大小

    直接查看当前文件夹的大小: du –sh 只看文件夹的名字里包含某字符串的子文件夹的大小: du –h –d 1 | grep "BACKEND" 我的linux系统被阉割的比较厉 ...

  2. iOS中计算文件夹中文件大小

    通常用于删除缓存的时,计算缓存大小 //单个文件的大小 - (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manage ...

  3. Linux中统计某个文件夹的大小

    进入这个文件夹内 然后du -sh命令

  4. iOS中计算字符串NSString的高度

    根据固定宽度计算字符串高度: NSString *info = @"但是公司的高度是广东省公司的广东省高速度来开个大帅哥多撒谎个爱好就跟他说噶三公司噶是的刚好是我哥如果黑暗如果坏都干撒降低公 ...

  5. (一一七)基本文件操作 -SDWebImage清除缓存 -文件夹的大小计算

    在iOS的App沙盒中,Documents和Library/Preferences都会被备份到iCloud,因此只适合放置一些记录文件,例如plist.数据库文件.缓存一般放置到Library/Cac ...

  6. 通过Python计算一个文件夹大小

    在进行计算一个文件夹内容大小的时候,我们要考虑文件夹内都有什么内容,可能都是一个一个的单文件,也有可能都是子文件夹,或者二者都有,既然要计算整个文件夹的大小,我们当然要计算每一个文件的大小以及每一个子 ...

  7. 如何在QFileSystemModel中显示文件夹的大小

    在Qt里面,有一种Model/View框架,Model负责收集信息,View负责显示信息.QFileSystemModel可以读取文件大小,但是默认情况下不能读取文件夹大小. QFileSystemM ...

  8. 通过命令“du–sk”, “du–Ask” 的区别,谈谈如何在有保护的文件系统中查看文件或文件夹的大小

    我们都知道,在Windows中,右键单击一个文件或文件夹,选属性(Properties)可以看到这个文件或文件夹的大小.而这个大小是文件的原始大小,即逻辑大小(logical size).即一个1KB ...

  9. Linux中查看各文件夹大小命令:du -h --max-depth=1

    Linux中查看各文件夹大小命令:du -h --max-depth=1 du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-siz ...

随机推荐

  1. iOS 选择的照片或者拍照的图片上添加日期水印

    1..引入框架 #import "CLLocation+GPSDictionary.h"#import "NSDictionary+CLLocation.h" ...

  2. 黑马程序员-NSDictionary和NSMutableDictionary

    NSDictionary和NSMutableDictionary:通过key和value进行对应,进行存储元素,能够方便提取所需的元素.key是不能够重复出现,但是value能够重复出现.NSDict ...

  3. EasyUI需注意的问题01

    一.EasyUI-Datagrid分页 在创建数据表格(DataGrid)的时候,通过设置'pagination' 属性为 true,可以在数据表格的底部生成一个分页工具栏. <table id ...

  4. 01、AngularJs简介

    AngularJs致力于减轻程序员在开发Ajax应用过程的痛苦.做前端的童鞋都知道,当在开发Ajax应用时,我们在与后台交互的同时,还在不断的手动操作Dom,诸如自己组装后台数据,渲染Html标签生成 ...

  5. 不常用的toLocaleString()方法

    在javascript中所有的对象都具有toLocaleString().toString()和valueOf()方法. 其中,很多情况调用toString()和valueOf方法会返回相同的值,但是 ...

  6. Latent semantic analysis note(LSA)

    1 LSA Introduction LSA(latent semantic analysis)潜在语义分析,也被称为LSI(latent semantic index),是Scott Deerwes ...

  7. zookeeper 的多线程和单线程库使用对比

    zookeeper提供了两个库,zookeeper_st和 zookeeper_mt. 前者是单线程库,仅仅提供了异步API和集成在应用程序实现循环中的回调函数,这个库是为了支持pthread库不支持 ...

  8. highcharts 当Y轴全部没有数据的时候 数据标签显示最下面 而不是居中显示

    yAxis: {min: 0,minRange: 1}

  9. 七牛php sdk 生成上传凭证时出现 undefined function Qiniu_SetKeys()

    将qiniu/http.php文件改名即可,原因是xampp等集成环境会安装pear存在了http.php

  10. 【异常】VS中运行HTTP 无法注册URL

    参考资料 http://www.java123.net/detail/view-449670.html http://www.cnblogs.com/jiewei915/archive/2010/06 ...