iOS开发学无止境 - NSFileManager文件操作的十个小功能

 

(配图的小故事还记得嘛)

 

 

NSFileManager是一个单列类,也是一个文件管理器。可以通过NSFileManager创建文件夹、创建文件、写文件、读文件内容等等基本功能。

下面将介绍NSFileManager文件操作的十个小功能。我们在Documents里面进行举例,首先是获取Documents的路径。这个在iOS开发之沙盒机制(SandBox)已经详细讲解过了。获取Documents路径方法如下:

- (NSString *)getDocumentsPath
{//获取Documents路径NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *path = [paths objectAtIndex:0];NSLog(@"path:%@", path);return path;
}

创建文件夹

-(void)createDirectory{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSDirectory = [documentsPath stringByAppendingPathComponent:@"iOS"];BOOL isSuccess = [fileManager createDirectoryAtPath:iOSDirectory withIntermediateDirectories:YES attributes:nil error:nil];if (isSuccess) {NSLog(@"success");} else {NSLog(@"fail");}
}

创建文件

-(void)createFile{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager createFileAtPath:iOSPath contents:nil attributes:nil];if (isSuccess) {NSLog(@"success");} else {NSLog(@"fail");}
}

写文件

-(void)writeFile{NSString *documentsPath =[self getDocumentsPath];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *content = @"我要写数据啦";BOOL isSuccess = [content writeToFile:iOSPath atomically:YES encoding:NSUTF8StringEncoding error:nil];if (isSuccess) {NSLog(@"write success");} else {NSLog(@"write fail");}
}

读取文件内容

-(void)readFileContent{NSString *documentsPath =[self getDocumentsPath];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *content = [NSString stringWithContentsOfFile:iOSPath encoding:NSUTF8StringEncoding error:nil];NSLog(@"read success: %@",content);
}

判断文件是否存在

- (BOOL)isSxistAtPath:(NSString *)filePath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:filePath];return isExist;
}

计算文件大小

- (unsigned long long)fileSizeAtPath:(NSString *)filePath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:filePath];if (isExist){unsigned long long fileSize = [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];return fileSize;} else {NSLog(@"file is not exist");return 0;}
}

计算整个文件夹中所有文件大小

- (unsigned long long)folderSizeAtPath:(NSString*)folderPath{NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isExist = [fileManager fileExistsAtPath:folderPath];if (isExist){NSEnumerator *childFileEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];unsigned long long folderSize = 0;NSString *fileName = @"";while ((fileName = [childFileEnumerator nextObject]) != nil){NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];folderSize += [self fileSizeAtPath:fileAbsolutePath];}return folderSize / (1024.0 * 1024.0);} else {NSLog(@"file is not exist");return 0;}
}

删除文件

-(void)deleteFile{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager removeItemAtPath:iOSPath error:nil];if (isSuccess) {NSLog(@"delete success");}else{NSLog(@"delete fail");}
}

移动文件

- (void)moveFileName
{NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];if (isSuccess) {NSLog(@"rename success");}else{NSLog(@"rename fail");}
}

重命名

- (void)renameFileName
{//通过移动该文件对文件重命名NSString *documentsPath =[self getDocumentsPath];NSFileManager *fileManager = [NSFileManager defaultManager];NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"rename.txt"];BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];if (isSuccess) {NSLog(@"rename success");}else{NSLog(@"rename fail");}
}

以上文件操作代码都在iOSStrongDemo,可以直接通过git拉下来进行测试。关于NSFileManager的用法还有很多,一起接续探索吧!

转载于:https://www.cnblogs.com/xvewuzhijing/p/5003862.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

smokeping自动检测系统

如何的使用smokeping来监控idc机房的网络质量情况,从监控图上的延时与丢包能分辨出你机房的网络是否稳定,是否为多线,是否为BGP机房,到各城市的3个运行商网络各是什么情况,如果出现问题,如果有针对的解决。…

bg感_【0328】BG推文 | 5本我在逃生游戏里养娃娃+岁月缱绻已无你+关于我比女主苏这回事+消失的白月光又回来了等...

大家多多支持原文!以下内容多为网络搜集,非商业用途。版权归原作者所有,侵联!BG文《我在逃生游戏里养娃娃》作者:鹤舫闲人《岁月缱绻已无你》作者:酒爷《关于我比女主苏这回事》作者:欢何极《消…

微信开发者工具 wxmi修改模版颜色_十款高效好用的在线网页工具,提升你的办公效率...

大家好, 我是阿毛,今天给大家推荐高效办公的10个在线网页工具,可以不用下载安装很多app,也不用在电脑上装很多软件。在线制作精彩视频操作非常简单,选择模板,上传照片然后点击制作等待完成就可以了&#xf…

[转]使用Navicat for Oracle工具连接oracle的

使用Navicat for Oracle工具连接oracle的 这是一款oracle的客户端的图形化管理和开发工具,对于许多的数据库都有支持。之前用过 Navicat for sqlserver,感觉很好用,所以下载了Oracle版的用。上网查看了一下这个工具可以用于任何版本 8i 或以上的 Oracle …

微信小程序基于第三方插件微信同声传译,以及一些问题解决办法

使用之前首先得在微信微信小程序后台添加插件,获取插件的appid 名称 使用时在app.json文件添加插件配置 1 plugins: { 2 WechatSI: { 3 version: 0.1.0, 4 provider: wx069ba97219f66d99 5 } 6 } 其次就是在使用的页面进行调用 在index.js外…

TF卡里删掉文件后内存没变大_内存卡损坏怎么修复?数据恢复方法教程

内存卡损坏怎么修复?内存卡又叫SD卡,是一种很轻便小巧的便携存储装置,往往内置于各种便携媒体设备内部。内存卡本身具有坚固、抗冲击等外部特性和读写快、空间大等内部特性,但是内存卡因为每天都要读写大量数据很容易从内部发生损…

idea 如何隐藏/展示不想看到的文件

隐藏:在 Ignore files and folders中添加想要过滤的文件或文件夹名称 展示隐藏文件: 在过滤列表中删除掉文件或者文件夹就好了 转载于:https://www.cnblogs.com/mengjianzhou/p/6177897.html

Java基础知识:Java实现Map集合二级联动4

comboBox.setModel(new DefaultComboBoxModel(getProvince())); // 添加省份信息 final JLabel label new JLabel(); label.setText("省/直辖市"); label.setBounds(155, 30, 66, 18); panel.add(label); final JLabel label_1 new JLabel(); label_1.setText(&quo…

linux QT 结束当前进程_Qt编写控件属性设计器7-串口采集

一、前言数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口、网络、数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为…

JAVA多线程之Synchronize 关键字原理

image众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式: 同步普通方法,锁的是当前对象。同步静态方法,锁的是当前 Class 对象。同步块,锁的是 {} 中的对象。实现原理:JVM 是通过进入、退出对…

iOS-数据持久化-第三方框架FMDB的使用

FMDB简单介绍 一、简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 对比苹果自带的Core Data框架,更加轻量级和灵活 提供了多线程安全…

电脑word文档打不开怎么办_word怎么转pdf?两个值得学习的高效转换法

word怎么转pdf?两个值得学习的高效转换法word怎么转pdf?pdf格式是我们经常能够使用到的格式,因为pdf格式在传递的过程中能更好地避免文件出现乱码打不开或误触导致文件被修改的情况。那如果想要把word文件转换成pdf格式以避免阅读word时文件被…

2020双十一实时大屏_2020拼多多双十一,拼多多双十一活动

2020拼多多双十一,拼多多双十一活动,2020拼多多双十一,拼多多双十一活动2020拼多多双十一,拼多多双十一活动拼多多双11来了全球狂欢节先领券再购物低价风暴 震撼来袭没有最低 只有更低拼多多优惠券商城拼多多优惠商城,…

dataTables本地刷新数据解决只能初始化一次问题

2019独角兽企业重金招聘Python工程师标准>>> dataTables的表格只能初始化一次,这样如果需要动态改变表格数据的话就需要写多个表格,这样很显然不是一个好的解决方案。 dataTables Api提供了刷新数据解决方案: 这里大概说一下案例&…

用-force –opengl 指令_苹果新系统ios14新功能汇总 轻点背面等小技巧怎么用

在 iOS 14 以及更新系统中,苹果为 iPhone X 以及更新机型带来了“轻点背面”功能,可以让用户轻点手机背面来实现更多操作,并且这项功能还支持“快捷指令”。例如,如果您不希望应用读取剪贴板中私密内容,可以利用“轻点…

PE文件格式(加密与解密3)(一)

本次的了解主要讲解 PE的基本概念、MS-DOS文件头、PE文件头、区块、输入表、输出表等。 这里我将会结合一个简单的小程序来加深我对PE文件结构的了解。 使用学习工具:有StudyPE、LordPE、PEID。 学习PE建议看书。。和自己动手。。。 PE文件: 在WIN上&…

mysql用户_MySQL用户权限管理详解

用户权限管理主要有以下作用:1. 可以限制用户访问哪些库、哪些表2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作3. 可以限制用户登录的IP或域名4. 可以限制用户自己的权限是否可以授权给别的用户一、用户授权mysql> grant all privile…

手把手教Electron+vue的使用

.现如今前端框架数不胜数,尤其是angular、vue吸引一大批前端开发者,在这个高新技术快速崛起的时代,自然少不了各种框架的结合使用。接下来是介绍electronvue的结合使用。 2.Electron是什么?? 对于我来说Electron相当于…

shell循环和分支

循环和分支对代码块的操作是构造组织shell脚本的关键. 循环和分支结构为脚本编程提供了操作代码块的工具.10.1. Loops循环就是重复一些命令的代码块,如果条件不满足就退出循环.for loopsfor arg in [list]这是一个基本的循环结构.它与C的for结构有很大不同.forarg in [list]do …

mysql主从_MySQL主从原理及配置详解

MySQL主从配置及原理,供大家参考,具体内容如下一、环境选择:1.Centos 6.52.MySQL 5.7二、什么是MySQL主从复制MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务…