文件IO
2015-12-19 16:58
197 查看
NSBundle
NSBundle使用单例模式,调用类方法+mainBundle,获取本地资源路径常用方法:
stringWithContentsOfile:encoding:error://从制定文件来初始化NSString
fileURLWithPath://使用NSURL加载本地资源
requestWithURL
URLWithString//加载网络资源
url的属性:scheme(协议名),host(主机),port(端口号),path(资源路径)
pathForResource:ofType://加载本地资路径
使用NSData作为缓冲区
foundation框架提供了NSData和NSMultableData,作为数据缓冲区。NSData常用的方法:
+data:创建一个空的NSData实例
+dataWithContentsOfURL:利用url关联的内容初始化NSData
+dataWithContentsOfFile:利用文件内容初始化NSData
-writeToFile:atomically:将NSData数据写入文件
-writeToURL:atomically:将NSData数据写到url路径
+dataWithData:直接使用另一个NSData创建NSData
一般我们从网络上下载的图片先存到NSData缓冲区中,在使用的时候就直接从缓冲区中读取图片,存入沙盒,这样效率更高,更节省流量
NSFileManager
使用NSFileManager管理文件和目录,NSFileManager也是用单例模式,通过+defaultManager创建一个NSFileManager对象常用的方法:
-createDirectoryAtPath:withIntermediateDirectories:attributes:error//创建目录
-createFileAtPath:contents:attributes根据制定文件路径和内容创建文件
-removeItemsAtPath:error:删除制定路径的文件
-copyItemAtPath:toPath:error:把文件从一个路径拷贝到另一个路径
-moveItemAtPath:toPath:error:把文件从一个路径移动到另一个路径。
-(BOOL)fileExistsAtPath:判断指定文件名是否存在某个路径
-(NSArray*)subPathsAtPath:递归获取指定的目录的所有子目录
NSFileHandle
使用NSFileHandle处理问价IO,NSFileHandle只能读取文件,不能创建文件。创建NSFileHandle的基本步骤:
1>创建一个NSFileHandle,此时会打开一个指定的文件。
2>对打开的文件进行IO操作
3>关闭文件
NSFileHandle提供的常用的方法:
+fileHandleForReadingAtPath:创建NSFileHandle,打开文件准备读取
+fileHandleForWritingAtPath:创建NSFileHandle,打开文件准备写入
+fileHandleForUpdatingAtPath:创建NSFileHandle,打开文件准备读取或者写入
-readDataToEndOfFile:获取文件的所有内容
-availableData:获取文件的所有可用数据
-readDataOfLength:获取文件的字段长度
-writeData:将指定数据文件写入到文件
-offsetInFile:获取文件指针的位置
-seekToEndOfFile:将文件指针移动到问价末尾
-seekToFileOffset将文件指针移动到指定位置
-closeFile关闭底层文件
对象归档
对象归档解决了上面不能直接存储对象的问题。对象归档分为Foundation框架的,例如NSArray,NSDictionary等的归档;对自定义对象的归档。归档后的文件是加密的,属性列表是明文的,最大的特点是可以对自定义对象进行归档。
对NSArray、NSDictionary归档:
[NSKeyedArchiver archiveRootObject:tofile:]
如果程序需要归档、恢复更多的对象,⽐比如希望⼀一次性收集多个对象,并将这些对象归档到单个⽂件中,NSMultableData来创建NSKeyedArchiver和NSKeyedUnarchiver对象
步骤:
1、以NSMultableData作为参数,创建NSKeyedArchiver对象
2、重复调用NSKeyedArchiver对象的-encodeXXX:forKey:
3、调用NSKeyedArchiver对象的finishEncoding方法结束归档
4、最后再将NSMultableData缓存区保存的数据写入文件
恢复自定义归档的内容:
1、以NSData作为参数,创建NSKeyedUnarchiver
2、重复调用NSKeyedUnarchiver对象的-decodeXX:forKey:逐个恢复
3、调用NSKeyedUnarchiver对象的finishDecoding方法结束恢复
自定义对象归档:
实现自定义对象归档或解归档就要遵守NSCopying协议,并且实现协议里的两个方法:
-(void)encodeWithCoder://:当程序归档某个对象时,就会调用这个方法,该方法归档该对象的所有属性
-(id)initWithCoder:当程序恢复归档中的对象时,就会调用该方法,该方法恢复对象的所有属性值
相关文章推荐
- Day 03
- 关于java的字符串操作
- Acjoy群赛D-Grade题解
- Oracle 定义类型
- Cocos2d-x3.1 粒子效果演示样例
- 【杭电】[2003]求绝对值
- 蓝桥杯校赛题目以及解析
- 星空-许巍
- 图像处理之增强---图像模糊检测
- collections 自定义排序
- lambda环境搭建
- getHibernateTemplate()和getSession()区别(转)
- 龙管家提示没有找到系统运行的相关配置信息
- 面试题整理
- NSString属性什么时候用copy,什么时候用strong?
- poj1990两个树状数组
- php把从数据库读取出来的数据存放到数组里,然后数组不能直接使用,要转为字符串
- mysql常用技巧
- 当资本在买万科时,到底在买什么?
- Python基础【第十一篇】文件操作(file()、open()方法和fileinput模块)