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. WPF 自定义TextBox,可控制键盘输入内容

    非原创,整理之前的代码的时候找出来的,可用,与大家分享一下! public class NumbericBoxWithZero : NumericBox { public NumbericBoxWit ...

  2. java基础3_流程控制语句

    一 条件判断 1. 条件运算符(三元表达式) ,其形式为: type d = a ? b : c; 具体化形式为:int d = 2 < 1 ? 3 : 4; 2. 轻量级的文本编辑器:Ultr ...

  3. LintCode 392 House Robber

    // Ref: https://segmentfault.com/a/1190000003811581// Ref: http://www.cnblogs.com/grandyang/p/438363 ...

  4. XML dom

    将文件解析为文档 三步过程 为了使用 XML 文件中的信息,必须解析文件以创建一个 Document 对象. Document 对象是一个接口,因而不能直接将它实例化:一般情况下,应用程序会相应使用一 ...

  5. 练习2-3:十六进制数字字符串转换为等价整型值,字符串允许包含的数字包括:0~9、a~f、A~F、x、X(C程序设计语言 第2版)

    #include <stdio.h> #include <string.h> #include <math.h> int htoi(char s[]){ unsig ...

  6. windows下安装python和依赖包的利器——Anaconda

    在windows下安装python和很多依赖包,安装起来略为痛苦,可以使用python的大整合包——Anaconda Anaconda下载地址: http://continuum.io/downloa ...

  7. [转]Python数据挖掘

  8. 手机浏览器,微信中播放amr录音

    由于微信公众号开发中,临时素材只有三天的有效期,但是客户要求所有录音永久保存,永久素材数量又有限制,故只能把录音保存到服务器上.但是存到服务器上有一个问题,手机微信中无法直接播放amr录音.无意中发现 ...

  9. oracle在impdp时报ORA-31655和ORA-39154

    检查表空间大小设置的是否合理. 另外可以试试 grant IMP_FULL_DATABASE to user;增加导入权限. (转)

  10. java servlet之过滤器1(解决jsp之间POST方式数据传递乱码)

    首先,看看没有解决乱码的效果,新建两个jsp页面(a.jsp跳转到b.jsp). <form action="b.jsp" method="post"&g ...