OC-NSFileManager和NSFileHandle的使用
对于objective-c中的有关文件目录的操作和文件的操作。
通过一道习题来熟悉NSFileManager和NSFileHandle中的方法的使用。
本题原意:将指定目录下所有后缀名为XXX(可以自己输入)的文件中字符串为@"him"(可以自己输入)改为@"me"(可以自己输入)
1.首先新建了一个文件解析类ReplaceStringInDirectory.h
@interface ReplaceStringInDirectory : NSObject /*** 替换指定文件中指定的所有字符串为另一个字符串*/ + (void)replaceInDirectory:(NSString *)pathFile withOldString:(NSString *)oldString withNewString:(NSString *)newString;//替换指定目录下所有指定类型的文件中的字符串 + (void)replaceInDirectory:(NSString *)pathDirectory withOldString:(NSString *)oldString withNewString:(NSString *)newString InType:(NSString *)typeFile; @end
2.在对应的ReplaceStringInDirectory.m文件中实现.h文件中的两个方法
/*** 替换指定文件中指定的所有字符串为另一个字符串*/ + (void)replaceInDirectory:(NSString *)pathFile withOldString:(NSString *)oldString withNewString:(NSString *)newString {//文件目录管理器 一个单例对象NSFileManager *fm = [NSFileManager defaultManager];//先备份一份文件在相同的路劲下,并以指定文件格式[fm copyItemAtPath:pathFile toPath:[pathFile stringByAppendingString:@"_bak"] error:nil];//创建文件句柄 文件指针 用以操作文件的内容NSFileHandle *fh = [NSFileHandle fileHandleForUpdatingAtPath:pathFile];//读取文件的信息NSData *data = [fh readDataToEndOfFile]; //这样会使的当前文件指针fh指向末尾NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];//判断当前字符串对象中是否包含有oldWordif ([dataString containsString:oldString]) {dataString = [dataString stringByReplacingOccurrencesOfString:oldString withString:newString];}//将文件清空,之后将字符串写回到文件中[fh truncateFileAtOffset:0];[fh writeData:[dataString dataUsingEncoding:NSUTF8StringEncoding]];//同步文件。 关闭线程锁 [fh synchronizeFile];[fh closeFile]; }//替换指定目录下所有指定类型的文件中的字符串 + (void)replaceInDirectory:(NSString *)pathDirectory withOldString:(NSString *)oldString withNewString:(NSString *)newString InType:(NSString *)typeFile {NSFileManager *fm = [NSFileManager defaultManager];//深层次的遍历目录NSArray *arrayFile = [fm subpathsOfDirectoryAtPath:pathDirectory error:nil];for (NSString *item in arrayFile) {//获取文件的后缀名if ([typeFile isEqualToString:[item pathExtension]]) {[self replaceInDirectory:[pathDirectory stringByAppendingFormat:@"/%@",item] withOldString:oldString withNewString:newString];}} }
需要注意是: NSFileManager *fm = [NSFileManager defaultManager];生成的对象是一个单例对象。
//创建文件句柄 文件指针 用以操作文件的内容
NSFileHandle *fh = [NSFileHandle fileHandleForUpdatingAtPath:pathFile];
该对象是以可读可写的方式创建的,创建文件句柄(指针),有三种方式 1.只读 2.只写 3.可读可写
转载于:https://www.cnblogs.com/BeyondAverage0908/p/4597424.html
OC-NSFileManager和NSFileHandle的使用相关推荐
- IOS文件管理系统:沙盒、NSFileManager、NSFileHandle、NSCoding、NSKeyedArchiver解析
什么是沙盒? 苹果为我们每个app都分配了一个固定的文件夹,我们在开发过程中可以向文件夹存入我们想要存储的数据,同时也能从这些文件夹取这些数据,但是我们不能取到其他app所存储的数据.简单说,沙盒就是 ...
- iOS 文件操作 NSFileManager
文章目录 相关知识 相关文件操作 NSFileManager和NSFileHandle 对象等复杂类型的读写操作 参考 相关知识 沙盒机制 每一个iOS应用程序都会为自己创建一个文件系统目录,这个独立 ...
- [绍棠] iOS文件目录和文件操作 及NSFileManager的读写操作
1.理解部分 1.1文件 <1>文件管理类NSFileManager 2.对文件进行管理操作 a.遍历查看目录下的文件 [深度遍历] [浅度遍历] b.创建文件/目录 c.拷贝文件/目录 ...
- iOS 利用AFNetworking实现大文件分片上传
概述 一说到文件上传,想必大家都并不陌生,更何况是利用AFNetworking(PS:后期统称AF)来做,那更是小菜一碟.比如开发中常见的场景:头像上传,九宫格图片上传...等等,这些场景无一不使用到 ...
- iOS 文件下载及断点续传
ios的下载我们可以使用的方法有:NSData.NSURLConnection.NSURLSession还有第三方框架AFNetworking和ASI 利用NSData方法和NSURLConnecti ...
- Fundation快速框架搜索
Fundation快速框架搜索 基本上包含了Foudation框架内的所有函数和方法. 使用方法:全选,自己建一个文本类的文件,如果要使用某个方法却想不起来方法名,直接在文本中搜索关键字即可. 2.1 ...
- iOS 中文件管理器的使用
援引:https://www.jianshu.com/p/1ee2619137f9 文章之前,我们先来看下本文的知识大纲: ios中文件管理器的使用.png 1.NSFileManager和NSFil ...
- OC中文件读取类(NSFileHandle)介绍和常用使用方法
NSFileHandle 1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建NSFileManager *fil ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
最新文章
- 把自己的思想记录下来
- 浙江金华暂时停用“智能头箍”,专家:监测学生脑电违反伦理
- 盘点上海AI行业的10岁、20岁和30岁们
- 修改Windows AD的LDAP查询限制
- 谋定新型农业主体-农业大健康·万祥军:农业高质量发展规划
- CSS基础:text-overflow:ellipsis溢出文本的显示样式
- python 东哥 with open_python 连接redis cluster
- Android中MVC框架的运用
- 华为Python面试题
- 京东登录页面html代码_利用Python爬取京东商品的一种办法
- html打印成pdf页面大小,pdf页面大小调整 pdf打印页边距怎么设置
- 如何将Excel中的图表导出为图片
- 使用fedora32桌面图标
- 天津大学2020年考研考前公告
- Win10系统提升开机速度方法
- matlab设置非平坦结构元,基于多尺度多结构元的数学形态学边缘检测
- php怎么接入微支付宝支付,php开发中app怎么接入支付宝
- 软件系统三员管理_3个可怕的系统管理员故事
- css sprites精灵技术:Html将所有图片放在一张图片上
- UG二次开发GRIP体积重量
热门文章
- GetClientRect相当于GetWindowRect和ScreenToClient区别
- 用户登录成功后才进入主窗口进行其他操作
- windows遍历目录下所有文件
- JAVA进阶day08泛型
- [react] 为什么标签里的for要写成htmlFor呢?
- [html] 图片上传时实现本地预览功能的原理是什么?
- [css] css如何消除字体的锯齿?
- [css] 用css画一个五边形和一个六边形
- “约见”面试官系列之常见面试题之第六十六篇之事件委托的原理和实现(建议收藏)
- “约见”面试官系列之常见面试题之第六十五篇之ajax如何解析jsonp(建议收藏)