您的位置:首页 > 其它

文件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:当程序恢复归档中的对象时,就会调用该方法,该方法恢复对象的所有属性值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: