对于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的使用相关推荐

  1. IOS文件管理系统:沙盒、NSFileManager、NSFileHandle、NSCoding、NSKeyedArchiver解析

    什么是沙盒? 苹果为我们每个app都分配了一个固定的文件夹,我们在开发过程中可以向文件夹存入我们想要存储的数据,同时也能从这些文件夹取这些数据,但是我们不能取到其他app所存储的数据.简单说,沙盒就是 ...

  2. iOS 文件操作 NSFileManager

    文章目录 相关知识 相关文件操作 NSFileManager和NSFileHandle 对象等复杂类型的读写操作 参考 相关知识 沙盒机制 每一个iOS应用程序都会为自己创建一个文件系统目录,这个独立 ...

  3. [绍棠] iOS文件目录和文件操作 及NSFileManager的读写操作

    1.理解部分 1.1文件 <1>文件管理类NSFileManager 2.对文件进行管理操作 a.遍历查看目录下的文件 [深度遍历] [浅度遍历] b.创建文件/目录 c.拷贝文件/目录 ...

  4. iOS 利用AFNetworking实现大文件分片上传

    概述 一说到文件上传,想必大家都并不陌生,更何况是利用AFNetworking(PS:后期统称AF)来做,那更是小菜一碟.比如开发中常见的场景:头像上传,九宫格图片上传...等等,这些场景无一不使用到 ...

  5. iOS 文件下载及断点续传

    ios的下载我们可以使用的方法有:NSData.NSURLConnection.NSURLSession还有第三方框架AFNetworking和ASI 利用NSData方法和NSURLConnecti ...

  6. Fundation快速框架搜索

    Fundation快速框架搜索 基本上包含了Foudation框架内的所有函数和方法. 使用方法:全选,自己建一个文本类的文件,如果要使用某个方法却想不起来方法名,直接在文本中搜索关键字即可. 2.1 ...

  7. iOS 中文件管理器的使用

    援引:https://www.jianshu.com/p/1ee2619137f9 文章之前,我们先来看下本文的知识大纲: ios中文件管理器的使用.png 1.NSFileManager和NSFil ...

  8. OC中文件读取类(NSFileHandle)介绍和常用使用方法

    NSFileHandle 1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建NSFileManager *fil ...

  9. IOS学习之路--OC的基础知识

    1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...

最新文章

  1. 把自己的思想记录下来
  2. 浙江金华暂时停用“智能头箍”,专家:监测学生脑电违反伦理
  3. 盘点上海AI行业的10岁、20岁和30岁们
  4. 修改Windows AD的LDAP查询限制
  5. 谋定新型农业主体-农业大健康·万祥军:农业高质量发展规划
  6. CSS基础:text-overflow:ellipsis溢出文本的显示样式
  7. python 东哥 with open_python 连接redis cluster
  8. Android中MVC框架的运用
  9. 华为Python面试题
  10. 京东登录页面html代码_利用Python爬取京东商品的一种办法
  11. html打印成pdf页面大小,pdf页面大小调整 pdf打印页边距怎么设置
  12. 如何将Excel中的图表导出为图片
  13. 使用fedora32桌面图标
  14. 天津大学2020年考研考前公告
  15. Win10系统提升开机速度方法
  16. matlab设置非平坦结构元,基于多尺度多结构元的数学形态学边缘检测
  17. php怎么接入微支付宝支付,php开发中app怎么接入支付宝
  18. 软件系统三员管理_3个可怕的系统管理员故事
  19. css sprites精灵技术:Html将所有图片放在一张图片上
  20. UG二次开发GRIP体积重量

热门文章

  1. GetClientRect相当于GetWindowRect和ScreenToClient区别
  2. 用户登录成功后才进入主窗口进行其他操作
  3. windows遍历目录下所有文件
  4. JAVA进阶day08泛型
  5. [react] 为什么标签里的for要写成htmlFor呢?
  6. [html] 图片上传时实现本地预览功能的原理是什么?
  7. [css] css如何消除字体的锯齿?
  8. [css] 用css画一个五边形和一个六边形
  9. “约见”面试官系列之常见面试题之第六十六篇之事件委托的原理和实现(建议收藏)
  10. “约见”面试官系列之常见面试题之第六十五篇之ajax如何解析jsonp(建议收藏)