不使用文件管理者进行文件读取的技术
读取文件涉及到在磁盘与代码之间传输二进制流,这是最底层的文件管理,也是其他较复杂的技术的基础。有时候,最复杂的数据结构都必须转换成二进制流再存入磁盘中。类似的,读取文件,也要先读取二进制流,再转化成所需要展示的复杂数据结构。
使用输出流向磁盘读入数据
使用输入流从磁盘读取数据
流对象使用当前线程的run loop安排读写操作。输入流叫醒run loop 并且当有数据需要读取的时候通知代理,输出流叫醒run loop 当有空间进行写入数据的时候。当操作文档时,run loop 被多次叫醒以执行读写操作,这也意味着,你的代理代码会被重复调用直到你关闭流对象或者到达了文件的末尾。
如何建立使用流对象,读取数据,详情见 Stream Programming Guide.
读取文件有多种不同的技术,几乎所有的都同时支持iOS and OS X.这几种方式虽然方式有细微的不同,但最终目的是一样的,有些是序列化读取数据 ,有些是可以允许你跳至某个节点,单独操作文件的某部分 ,有些是同步读取,有些是异步读取。
如何选择有效的技术,取决于你想如何控制读取过程和你想花费多少代码在文件管理上面。高层的技术比如Cocoa streams限制读取的灵活性,但提供一个便捷的使用接口,底层的技术比如POSIX and Grand Central Dispatch (GCD)给你最大的灵活性,但需要编写更多的代码去实现。
异步读取文件
文件操作需要访问磁盘,或者服务器,异步执行这些操作是比较推荐使用的,技术比如 Cocoa streams and Grand Central Dispatch (GCD) 总是被设计成异步执行的
使用流线性的处理整个文件
如果你总是需要从头到尾读取文件,流提供一个简单的异步接口,流被设计成管理套接字和其他类型的数据,但是你可以使用流进行多次读取,有两种类型的流。