iOS 文件读写

加载plist或其它文件

获取plist文件的路径

NSString *path = [[NSBundle mainBundle] pathForResource:@"data.plist" ofType:nil];
// [NSBundle mainBundle] 表示获取这个app安装到手机上时的安装目录;然后在app的安装根目录下搜索data.plist文件的路径;
NSString *path = NSHomeDirectory(); // 获取沙盒地址

打开plist文件,获取数据

NSArray *arr = [NSArray arrayWithContentsOfFile:path];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

通过xib动态创建UIView

XXView *view = [[[NSBundle mainBundle] loadNibNamed:@"TestXib" owner:nil options:nil] firstObject];
// NSBundle的loadNibNamed方法会返回一个UIView*的数组,因为一个xib文件中可以添加多个UIView;

xib加载过程
<1>.根据文件名,搜索对应的xib(nib)文件;
<2>.加载xib文件的时候,会按顺序加载xib文件中的每个控件;
<3>.对于每个控件,创建的时候都会查找对应的Class属性中配置的类型,然后创建相应的类的对象;
<4>.创建好某个控件后,按照在xib中配置的属性值,依次为对象的属性赋值;
创建好该控件的子控件,并设置属性值,然后把该控件加入到父控件中;
最后返回一个数组,这个数组中包含创建的根元素对象;
加载xib的另外一种方法

UINib *nib = [UINib nibWithNIbName:@"" bundle:nil];  // 使用nainBundle,根据xib文件创建xib对象;
UIView *view = [[nib instantiateWithOwner:nil opsions:nil] lastObject];  // 获取xib中某个对象(控件)

NSFileManager

NSFileManager *mgr = [NSFileManager defaultManager];  // 获取文件操作对象;
// 在创建的时候,contents传nil,此时文件大小为0
[mgr createFileAtPath:filePath contents:nil attributes:nil];
[mgr fileExistsAtPath:];  // 文件是否存在;
// 获取一个文件的属性(大小,修改时间等);
NSDictionary *attr = [mgr attributesOfItemAtPath:file error:nil];// 获取file路径对应的文件信息(NSFileType,NSFileSize...)
[attr[NSFileSize] longLongValue]; // 获取文件大小
[mgr removeItemAtPath:file error:nil]; // 删除文件\文件夹

判断file是否存在,并获取是否是文件夹;

BOOL isDirectory = NO;  
BOOL fileExists = [mgr fileExistsAtPath:file isDirectory:&isDirectory];

遍历:

[mgr contentsOfDirectoryAtPath:file error:nil];
// 只能获取file文件夹里面的子文件\子文件夹;
[mgr subpathsAtPath:file] // 获取file文件夹里面的文件及子文件夹下面的文件;

NSFileHandle

读写文件句柄

NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath];
handle.totalLength = 12;  // 设置完整的文件长度;
[handle truncateFileAtOffset:length];  // 让文件的长度为length;

[handle seekToEndOfFile];  // 移动到文件的尾部;
[handle writeData:data];  // 从当前移动的位置写入数据;
[handle closeFile];  // 关闭连接(不再输入数据到文件中);

NSData

获取本地文件二进制数据,两种方式:

NSString *filepath = [[NSBundle mainBundle] pathForResource:@"xx.txt" ofType:nil];
NSData *data = [NSData dataWithContentsOfFile:filepath];
// 给本地文件发送一个请求;
NSURL *fileurl = [[NSBundle mainBundle] URLForResource:"xx.txt" withExtension:nil];
NSURLRequest *request = [NSURLRequest requestWithURL:fileurl];
NSURLResponse *response = nil;
NSData *d = [NSURLConnection sendSynchronousRequest:request returningResponse:response error:nil];
// response.MIMETYPE;  // 文件类型;
NSData *data1 = [NSData dataWithContentsOfURL:fileurl];

NSDictionary与NSData互转

把dict字典对象序列化成NSData二进制数据

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict];

将二进制数据转换成字典

NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章