您的位置:首页 > 移动开发 > IOS开发

IOS 文件读写常用的2中方法

2015-06-02 17:02 465 查看
IOS常用的数据存储有两种,一种是将数据通过文件存储在 documentDirectory中,另一种是将文件通过plist文件存储

一。通过document永久存储文件

返回文件名称

- (NSString*) writeFile{
//创建文件管理器
NSFileManager *fileManager = [NSFileManager defaultManager];

//获取document路径,括号中属性为当前应用程序独享

NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,      NSUserDomainMask, YES);

NSString *documentDirectory = [directoryPaths objectAtIndex:0];

//定义记录文件全名以及路径的字符串filePath

NSString *filePath = [documentDirectory stringByAppendingPathComponent:@"weathertest.plist"];

//查找文件,如果不存在,就创建一个文件

//    if (![fileManager fileExistsAtPath:filePath]) {
//
//        [fileManager createFileAtPath:filePath contents:nil attributes:nil];
//
//    }
//如果想检视文件有没有生成,可以在视图上添加一个Label,加一行代码显示地址。

// Label.text = documentDirectory;
NSLog(@"------documentDirectory:%@---",documentDirectory);

//或者

// Label.text = filePath;
NSLog(@"------filePath:%@---",filePath);

return filePath;
}


将数据写入到文件中去

- (void)testWriteFile{

NSString *filePath = [self writeFile];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
self.fileConfDic = [NSMutableDictionary dictionaryWithContentsOfFile:filePath];
}
else
{
self.fileConfDic = [[[NSMutableDictionary alloc] initWithCapacity:10] autorelease];
}
[self.fileConfDic setObject:@"1" forKey:@"HdFile"];
NSMutableDictionary *logInfo = [[NSMutableDictionary alloc] initWithCapacity:2];

if(![fileConfDic writeToFile: filePath atomically:YES]){
[logInfo setObject:@"文件保存失败" forKey:@"信息"];
[logInfo setObject:@"执行saveFileDic时失败" forKey:@"出错时机"];
[logInfo setObject:filePath forKey:@"路径"];
}else{

[logInfo setObject:@"文件保存成功" forKey:@"信息"];
[logInfo setObject:filePath forKey:@"文件保存路径"];
}

[logInfo writeToFile: [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"log_info.plist"] atomically:YES];
[logInfo release];
}


当进行完毕以上操作后,你就可以在document目录下面看到weathertest.plist 文件了,并且文件中还有 1--HdFile的字典。
2.通过plist问价来存储

此处可以存储NsArray ,Bool.等常用数据类型。当所存储的数据是 NSMutableArray,NSMutableDictionary可变的数据类型时,需要将其转换为常用数据类型,否则会奔溃

//保留到一个NSDictionary字典里,由系统保存到文件里.

[[NSUserDefaults
standardUserDefaults] setBool:YES
forKey:@"key_isLogined"];
//命令直接同步到文件里,来避免数据的丢失。
[[NSUserDefaults
standardUserDefaults] synchronize];

//放在这里做判断,如果首次登陆成功的话,保存登陆状态,以后就直接进入主界面
isLogined=[[NSUserDefaults
standardUserDefaults] boolForKey:@"key_isLogined"];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: