NSFileManager和NSFileHandler的作用, category的理解

NSFileManager类可以管理文件系统中的文件和目录,也可以定位、判断是否存在、创建、拷贝、删除文件和目录,还可以获得文件和目录的信息;

对于读写文件,NSFileManager只可以读写字符串类型的文件,而NSFileHandler是文件描述符的封装类,可以读写文件(图片、设备、网络接口)、套接字、管道和设备。

代码示例:

/**
 *  读文件
 */
- (void)readFile{
    //1、实例化
    NSFileHandle *readFile = [NSFileHandle fileHandleForReadingAtPath:@"/tmp/Hello.txt"];
    //2、读文件到文件尾部
    NSData *buffer = [readFile readDataToEndOfFile];
    //3、将NSData转换成字符串
    NSString *temp = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding];
    //4、关闭文件
    [readFile closeFile];
}

/**
 *  写文件
 */
- (void)writeFile{
    //1、创建写文件处理器
    NSFileHandle *writeFile = [NSFileHandle fileHandleForWritingAtPath:@"/tmp/newFile.txt"];
    //2、将字符串转换成NSData
    NSString *contents = @"hello everyone";
    NSData *buffer = [contents dataUsingEncoding:NSUTF8StringEncoding];
    //3、写NSData
    [writeFile writeData:buffer];
    //4、关闭文件
    [writeFile closeFile];
}

关于category的一些理解

刚才在看category, 想到分类可以用来添加方法,子类也可以用来添加方法,子类还可以添加实例变量,不是比分类更好吗,为啥还要使用分类?

设想一个场景:想给系统类比如NSString新添加一个方法,而这个方法在整个项目中会大量用到,这时候如果使用子类A来添加这个方法,那么其他NSString的子类想使用这个方法,必须继承子类A,才能使用这个方法。但是有时候我们并不想继承子类A,分类的使用优势这时候出来了。

     使用category给NSString新添加一个方法,其他NSString的子类想使用这个方法,直接继承NSString,并引用分类就可以使用了 !

  分类通常作为一种组织框架代码的工具来使用。

    查了下资料,介绍分类的用途:

1、在不创建继承类的情况下实现对已有类的扩展;

2、简化类的开发工作。例如,当一个类需要多个程序员协同开发时,分类可以将同一个类根据用途分别放在不同的源文件中,从而便于程序员独立开发相应的方法集合;

3、将常用的相关方法分组;

4、在没有源代码的情况下可以用来修复bug

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python自动化测试

测试驱动之xml文件的处理

Xml是可扩展标记语言,关于xml的技术本人这里不在介绍,感兴趣的同学可以去w3c看看详细的资料,这里,我仅仅介绍的是如何获取xml文档结构中的...

16530
来自专栏iOS122-移动混合开发研究院

MagicalRecord,一个简化CoreData操作的工具库

简介 项目主页:https://github.com/magicalpanda/MagicalRecord 实例下载:https://github.com/io...

29350
来自专栏谦谦君子修罗刀

程序员面试闪充 -- KVC&KVO

一、键值编码KVC kvc&kvo视频讲解 1、介绍 由于oc的语言特性,使得开发者根本不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Valu...

290110
来自专栏冰霜之地

BeeHive —— 一个优雅但还在完善中的解耦框架

BeeHive是阿里巴巴公司开源的一个iOS框架,这个框架是App模块化编程的框架一种实现方案,吸收了Spring框架Service的理念来实现模块间的API解...

31130
来自专栏JavaEdge

高性能队列——Disruptor总论1 背景2 Java内置队列3 ArrayBlockingQueue的问题4 Disruptor的设计方案代码样例性能等待策略Log4j 2应用场景

这里所说的队列是系统内部的内存队列,而不是Kafka这样的分布式队列 Disruptor特性限于3.3.4

34530
来自专栏Java编程技术

使用数据库悲观锁实现不可重入的分布式锁

在同一个jvm进程中时,可以使用JUC提供的一些锁来解决多个线程竞争同一个共享资源时候的线程安全问题,但是当多个不同机器上的不同jvm进程共同竞争同一个共享资源...

8510
来自专栏陈纪庚

SPA初试-1

即每一个页面对应着一个状态,一个状态有一个状态名,还有一个模板/模板url,这样我们就可以将不同页面的内容写到不同的html里,然后通过templateUrl将...

11310
来自专栏nummy

命令模式

8730
来自专栏IMWeb前端团队

一个很low的问题,forEach怎么跳出循环?

本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载 方法一: try catch const arr = [0, 1, 2, 3...

832100
来自专栏iOS技术杂谈

深入源码理解YYCache 、SDWebImage、AFNetworking、NSCache 缓存方式与对比

深入源码理解YYCache 、SDWebImage、AFNetworking、NSCache 缓存方式与对比 转载请注明出处 https://cloud.ten...

79170

扫码关注云+社区

领取腾讯云代金券