• 计算文件夹下所有文件的大小

// 查看错误信息

__autoreleasing NSError *error;

// 文件管理对象

NSFileManager *manager = [NSFileManager defaultManager];

// 读取路径

NSString *path = @"/Users/Mu/Desktop/copy/17-Copy基本使用(深浅拷贝).mp4";

// 记录内存

double size = 0;

// 获取文件夹属性:内存大小不准确

NSDictionary *dic1 = [manager attributesOfItemAtPath:path error:&error];

// 查看是否出错

// localizedFailureReason:失败原因

// localizedDescription:本地描述信息

// NSLog(@"%@", error.localizedDescription);

// 关键字NSFileSize对应的是占用内存

// NSLog(@"%@", dic1[@"NSFileSize"]);

NSLog(@"----------");

// isDirectory(计算机文件或程序的目录)

BOOL dir = NO;

// 判断文件是否存在,并且是否为文件夹

if ([manager fileExistsAtPath:path isDirectory:&dir]&&dir==YES)

{

// 获取文件夹所有的子文件:存入集合(包括子文件夹)

// - 方法返回值是一个NSArray:NSArray内存储的是NSString

NSArray *singe = [manager subpathsAtPath:path];

// 遍历集合即得到所有的文件名名:不是全部路径

for (NSString *str in singe)

{

// 因为是计算搜文件的大小,所以需要去掉子文件夹:通过判断文件格式即可 [str.pathExtension isEqualToString:@"png"]

// 或者判断其或者是否符合格式 [str hasSuffix:@".png"]

if ([str.pathExtension isEqualToString:@"png"])

{

// 因为得到的是去除掉总文件夹的文件名。因此需要加上文件的路径:占位符格式化

NSDictionary *dic = [manager attributesOfItemAtPath:[NSString stringWithFormat:@"%@/%@", path, str]error:&error];

// 叠加文件的大小

size += [dic[@"NSFileSize"] intValue];

// 打印每一个符合要求的路径

//NSLog(@"%@", str);

}

}

// 打印文件的大小:文件的存储size是B,现在获取的是G

NSLog(@"%f", size/1000/1000/1000);

// 路径为文件

}else

{

// 文件不存在或者文件路径不是文件夹

NSLog(@"文件不存在||不是文件夹");

if(!dir)

{

// 路径是文件,其大小

NSLog(@"%f", [dic1[@"NSFileSize"] floatValue]/1000000000);

}

}


每句代码都有注释,多看看

一道题看懂OC的文件管理:NSFileManager,计算文件包含内存大小的更多相关文章

  1. NSFileManager计算文件/文件夹大小

    在一些软件中,一般都会给用户展现当前APP的内存,同时用户可以根据自己的需要来清除缓存的内容.一般而言,文件夹是没有大小这个属性的,所以需要遍历文件夹的内容来计算文件夹的大小,下面用NSFileMan ...

  2. 写在最前面 - 《看懂每一行代码 - kubernetes》

    我要写什么 <看懂每一行代码 - kubernetes>会包含k8s整个项目的源码解析,考虑到门槛问题,在开始分析k8s之前我会通过一些更低难度的golang开源项目讲解来帮助大家提升go ...

  3. OC基础 文件管理

    OC基础  文件管理 1.文件管理类NSFileManager对象的创建: NSFileManager *fm = [NSFileManager defaultManager]; 2.文件操作: (1 ...

  4. IOS 看懂此文,你的block再也不需要WeakSelf弱引用了!

    前言: 最近都在折腾 Sagit 架框的内存释放的问题,所以对这一块有些心得. 对于新手,学到的文章都在教你用:typeof(self) __weak weakSelf = self. 对于老手,可能 ...

  5. 小学生都能看懂的数位dp

    前言 数位dp其实很久前就知道了,也做过几道和其他算法混在一起的题目,其实通过手玩是能做的 但毕竟是种算法,还是系统学下比较好(节省手玩时间) 模板题 P2602 [ZJOI2010]数字计数 化简题 ...

  6. 【小白视频学Java for循环】3分钟学会Java的for循环,让看懂for循环嵌套再不是难事

    目录 一.单个for循环介绍 二.for循环嵌套 听讲时能听懂的for循环为什么一做题就晕菜?一个for循环还勉强能看懂,但为什么一看到双重for循环脑子里就感觉脑子全是浆糊? 如果有上述问题那么就继 ...

  7. 从字符串到常量池,一文看懂String类设计

    从一道面试题开始 看到这个标题,你肯定以为我又要讲这道面试题了 // 这行代码创建了几个对象? String s3 = new String("1"); 是的,没错,我确实要从这里 ...

  8. 小刻也能看懂的Unraid系统使用手册:基础篇

    小刻也能看懂的Unraid系统使用手册 基础篇 Unraid系统简介 Unraid 的本体其实是 Linux,它主要安装在 NAS 和 All in One 服务器上,经常可以在 Linus 的视频里 ...

  9. [转]看懂UML类图

    这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图所表达的含义和最终的代码 ...

随机推荐

  1. fdisk添加磁盘

    1.            通过Fdisk查看系统分区详细信息: Fdisk –l   详解: [root@jetsenLin ~]# fdisk -l Disk /dev/sda: 10.7 GB, ...

  2. cssText笔记

    style.cssText 用来获取/设置元素的样式 设置: <div id= "a" style= "background: red;"> doc ...

  3. 【java图形计算器】 java awt swing组件应用

    package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...

  4. OpenGL.Vertex Array Object (VAO).

    OpenGL抛弃glEnable(),glColor(),glVertex(),glEnable()这一套流程的函数和管线以后,就需要一种新的方法来传递数据到Graphics Card来渲染几何体,我 ...

  5. Local declaration of 'XXX' hides instance variable

    今天调试程序遇到这么一个警告! Local declaration of 'XXX' hides instance variable 遇到这种原因,是因为本地变量跟函数参数变量同名.改变其一即可.

  6. JAVA-面向对象--封装

    1. 如果一个类中没有定义构造函数,会自动加上一个空参的默认构造函数 如果定义了一个构造函数,默认的空参构造函数就没有了. 2. this 当成员变量与局部变量重名的时候,可以使用this来区分.th ...

  7. 删除 win8.1中的网络1,网络2,宽带连接1,宽带连接2等网络记录

    新建txt文本,保存如下内容为reg文档: Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\W ...

  8. angular.js简介

    angularJS是一个javaScript框架.可通过<script>标签添加到HTML页面 angular通过指令扩展了HTML,且通过表达式绑定数据到html 当网页加载完毕,Ang ...

  9. 转:jmeter实践

    本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求.最后还用linux下的压测工具ab做了简单对比. 1.      ...

  10. HDU 3552 I can do it!

    脑洞题.http://blog.csdn.net/dgq8211/article/details/7748078 #include<cstdio> #include<cstring& ...