在文件管理中,计算文件的大小是要经常用到的操作!其核心就是利用NSData中的length方法来计算字节长度。


以下介绍文件中计算大小的五种常见方式:
创建文件的代码如下:

    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];NSLog(@"documentPath = %@",documentPath);NSString *path = [documentPath stringByAppendingPathComponent:@"myfile"];NSFileManager *fm = [NSFileManager defaultManager];if (![fm fileExistsAtPath:path]) {if ([fm createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil]) {NSString *fileName = [path lastPathComponent];NSLog(@"文件夹%@创建成功!",fileName);}}else {NSLog(@"文件已经存在!");}NSString *textPath = [path stringByAppendingPathComponent:@"content.txt"];NSString *content = @"this is my content22222222!";char *string = (char *)[content UTF8String];NSData *data = [NSData dataWithBytes:string length:strlen(string)];if (![fm fileExistsAtPath:textPath]) {if ([fm createFileAtPath:textPath contents:data attributes:nil]) {NSString *fileName = [textPath lastPathComponent];NSLog(@"文件%@创建成功!,文件类型为:%@",fileName,[fileName pathExtension]);}}else {NSLog(@"文件已经存在!");}

第一种计算文件大小的代码如下:

    NSArray *array = [fm subpathsAtPath:path];NSData *data1 = [NSData dataWithContentsOfFile:[path stringByAppendingPathComponent:array[0]]];NSLog(@"文件大小为:%ld",data1.length);

第二种计算文件大小的代码如下:

    NSData *data2 = [fm contentsAtPath:textPath];NSLog(@"文件大小为:%ld",data2.length);

第三种计算文件大小的代码如下:

 NSDictionary *dict = [fm attributesOfItemAtPath:textPath error:nil];NSInteger size = [dict[NSFileSize] integerValue];NSLog(@"文件大小为:%ld",size);

第四种计算文件大小的代码如下:

    NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:textPath]; //NSFileHandleNSData *data4 = [fileHandle readDataToEndOfFile];NSLog(@"文件大小为:%ld",data4.length);

第五种计算文件大小的代码如下:

    [fileHandle seekToFileOffset:0];NSData *data5 = [fileHandle availableData];NSLog(@"文件大小为:%ld",data5.length);[fileHandle closeFile]; //关闭NSFileHandle

测试结果如下:

2015-08-12 15:27:54.805 文件管理练习[11888:757524] documentPath = /Users/3017/Library/Developer/CoreSimulator/Devices/6B694589-D6CC-4EEC-B953-E4A519E801FC/data/Containers/Data/Application/D85F999C-AE67-4E66-B3D3-1B6FF5362667/Documents
2015-08-12 15:27:54.806 文件管理练习[11888:757524] 文件已经存在!
2015-08-12 15:27:54.846 文件管理练习[11888:757524] 文件已经存在!
2015-08-12 15:27:54.932 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.932 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.933 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.933 文件管理练习[11888:757524] 文件大小为:27
2015-08-12 15:27:54.933 文件管理练习[11888:757524] 文件大小为:27

好了,文件管理中计算文件的大小就到时为止了!

OC循环渐进:文件管理--计算文件大小的五种方式相关推荐

  1. 漫谈分子动力学计算热导率的五种方法

    关注 Mr.material,\color{Violet} \rm Mr.material\ ,Mr.material , 更\color{red}{更}更多\color{blue}{多}多精\col ...

  2. Android数据存储五种方式总结

    1 使用SharedPreferences存储数据     2 文件存储数据       3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解 ...

  3. php怎么读取txt文件_PHP读取文件内容的五种方式

    php读取文件内容的五种方式 分享下php读取文件内容的五种方法:好吧,写完后发现文件全部没有关闭.实际应用当中,请注意关闭 fclose($fp); -- php读取文件内容: -----第一种方法 ...

  4. Unity 之 关于停止协程的五种方式解析

    Unity 之 关于停止协程的五种方式解析 前言:了解协程 方式一:函数的方式 方式二:函数名的方式 方式三:接收返回值 方式四:StopAllCoroutines 方式五:禁用/销毁游戏对象 本文小 ...

  5. android mysql储存动态数据_Android数据存储五种方式总结

    本文介绍Android平台进行数据存储的五大方式,分别如下: 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据 适用范围:保存少量的数据,且这些数据的格式非常简单 ...

  6. 遍历List集合的五种方式

    遍历List集合的五种方式 //创建一个集合ArrayList<Student> alist = new ArrayList<>();//向集合中添加元素alist.add(n ...

  7. python引入模块的五种方式与内置模块

    模块 自定义模块 模块的定义与分类 模块的定义 简而言之,模块就是一些常用功能的集合,我们把一些常用的函数.变量或者方法写到一个python文件中,那么这个python文件就是模块,使用模块可以避免我 ...

  8. 前端百题——竟然有五种方式实现flat方法

    1 背景 不知道老铁们有没有遇到过一道面试题:如何将一个多维数组展开成一个一维数组?当时我遇到的时候还不了解flat这个神奇的方法,用了最传统的解决方法进行解决. const flatten = ar ...

  9. 前端百题斩【020】——竟然有五种方式实现flat方法

    写该系列文章的初衷是"让每位前端工程师掌握高频知识点,为工作助力".这是前端百题斩的第20斩,希望朋友们关注公众号"执鸢者",用知识武装自己的头脑. 20.1 ...

最新文章

  1. godaddy php5.ini,Godaddy主机如何开启GZIP压缩 | Godaddy美国主机中文指南
  2. 《Adobe Flash CS4中文版经典教程》——1.7 使用“工具”面板
  3. VTK修炼之道18:图像基本操作_图像信息的访问与修改(vtkImageChangeInformation)
  4. 服务器群集:Windows 2000 和 Windows Server 2003 网络配置的最佳做法(转自Technet)
  5. 织梦cms第四版仿七猫技术导航源码 附安装教程
  6. [Linux] 安装samba
  7. linux系统优化 io,Linux硬件IO的优化简介
  8. 在装有Anaconda的情况下,使用默认的python程序方法
  9. nvidia控制面板点了没反应win7_nvidia控制面板打不开,教你win7系统nvidia控制面板打不开的解决方法...
  10. Flash制作标题出现动画
  11. 同一无线络下电脑会打不开个别的网站网页,而手机却可以打开。
  12. 组织人事领域信息化探索:开启编制、干部、人事一体化管理新模式
  13. codeforces 407C Curious Array 数学
  14. 获取服务器端的webapps路径
  15. Excel使用技巧:合并单元格如何分组排序
  16. A40i使用笔记:系统配置
  17. installation of package ‘ ‘ had non-zero exit status
  18. 微信小程序-实现删除指定列表项
  19. LeakCanary 使用及原理分析
  20. project2007 key

热门文章

  1. SQL查询表结构相同的两张表中数据的差异
  2. 2021年西式面点师(初级)考试题及西式面点师(初级)免费试题
  3. try-with的使用
  4. js汉字转拼音包——pinyin-pro
  5. 照片的体积怎么缩小?教你快速缩小图片体积的方法
  6. 快速配置Tomcat,解决Tomcat卡住不动
  7. Vue:把组件作为自定义元素来使用以及Identifier ' simple_couter' is not in camel case问题解决
  8. 怎样将png格式的图片缩小?如何快速压缩图片的大小?
  9. 微信公众帐号——开发模式
  10. CSS好看的一些颜色