关于Plist文件的操做

重要概念:某些路径下“只能读,不能写”的缘由函数

  iPhone、ipad真机上atom

  Resouces文件夹:是只读的,没法写入。spa

  document 和temp文件夹:可读,可写。ip

@inter PlistMange :NSObjectci

-(void)resourcePathFileRead; //当前工程资源目录,不一样于真机“沙箱”中的路径资源

-(NSString*)docPath; //获取document文件夹路径rem

-(BOOL)isDirNeedCreate:(NSString*)dirPath; //判断目录是否须要新的建立string

-(BOOL)isFileNeedCreate:(NSString*)filePath;// 判断文件是否须要被建立it

-(void)doAdd;
io

-(void)doRead;

-(void)doModify;

-(void)doDelete;

@end

函数的实现:

-(NSString*)docPath

{

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,Yes);

  return[Paths objectIndex:0];//   返回document的路径

}

-(BOOL)isDirNeedCreate:(NSString*)dirPath

{

  if(NO==[NSFileManager default]fileExistsAtPath:dirPath])

  {

     return [[NSFileManager defaultManager]creatDirectoryAtPath:dirPath];

   }

   return NO;

}

//文件是否须要被建立,也就是看看文件是否存在,不存在的话就建立

-(BOOL)isFileNeedCreate:(NSString*)filePath

{

  if(NO==[[NSFileManager defaultManager]fileExistsAtPath:filePath])

  {

     return [NSFileManager defaultManager]createFileAtPath:filepath contents:nil attributes:nil];

  }

    return NO;

}

添加:包括建立不存在的空文件

-(void)doAdd

{

 NSString *docPath = [self docPath];

 NSString *dataFile = [docPath stringByAppendingPathComonent:@"docData.plist"];

 if(YES==[self isFileNeedCreate:dataFike])

  {

  NSLog(@"原文件不存在,现已建立空文件");

   }else

  {

  NSLog(@"文件已经存在,无需建立!");

   }

  NSMutableDictionary *plistDic = [[NSMutableDICtionary alloc]init];

  //添加2个“单条记录”

  [plstDic setObject:@"shanghai" forKey@"recordKey001"];

  [plstDic setObject:@"beijing" forKey@"recordKey002"];

   //添加2个“字典记录”

  [plistDic setobject:[NSDictionary dictionaryWithObjectsAndKeys:@"Jack",@"name",@"22",@"age",nil]forKey:@"recordKey001"];

  [plistDic setobject:[NSDictionary dictionaryWithObjectsAndKeys:@"Tom",@"name",@"33",@"age",nil]forKey:@"recordKey002"];

  [plistDic writeToFile:dataFile atomically:YES];//彻底覆盖

}

对应路径下生成了新文件:

内容以下:

读取

-(void)doRead{

  NSString *dataFile = [[self docPath]stringByAppendingPathComponent:@"docData.plist"];

  //读取全部内容

  NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:dataFile];

  //获取第一层字典

   NSDictionary *dicValue = [dic objectForKey:@"dicKey001"];

   //获取第一层" 字典记录"中的"子元素"

   NSlog(@"读取第一层“字典记录”中的“子元素”:\nname = %@ ",[dicValue objectForKey:@"name"])

   //读取第一层“单挑记录”

   NSlog(@"读取第一层“ 单条记录 ”:\nrecordKey001 = %@ ",[dic objectForKey:@"nrecordKey001"])

运行记录以下

}

修改

-(void) doModify{
NSString *dataFile=[[self docPath] stringByAppendingPathComponent:@"docData.plist"];
NSMutableDictionary *dic = [[[NSMutableDictionary alloc]initWithContentsOfFile:dataFile]mutableCopy];

//修改“单条记录”
NSString *city = [dic objectForKey:@"recordKey001"];
city = @"shanghai-new";
[dic setObject:city forKey:@"recordKey001"];
//修改“字典记录”
NSMutableDictionary *personInfo = [dic objectForKey:@"dicKey001"];
NSString *name = [dic objectForKey:@"name"];
name = @"Jack-new";
[personInfo setValue:name forKey:@"name"];
[dic setValue:personInfo forKey:@"dicKey001"];
//写入文件
[dic writeToFile:dataFile atomically:YES];

NSDictionary* dicResult = [NSDictionary dictionaryWithContentsOfFile:dataFile];
NSLog(@"修改结果:\n%@",dicResult);
}

删除

-(void) doDelete{
NSString *dataFile=[[self docPath] stringByAppendingPathComponent:@"docData.plist"];
NSMutableDictionary *dic = [[[NSMutableDictionary alloc]initWithContentsOfFile:dataFile]mutableCopy];
//删除“单条记录”
[dic removeObjectForKey:@"recordKey001"];
[dic removeObjectForKey:@"dicKey001"];
//删除“字典记录”

//写入文件
[dic writeToFile:dataFile atomically:YES];

NSDictionary* dicResult = [NSDictionary dictionaryWithContentsOfFile:dataFile];
NSLog(@"修改结果:\n%@",dicResult);
}

各个目录的获取

-(void)resourcePathFileRead{
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"resourceData" ofType:@"plist"];
    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    NSLog(@"resourceData.plist文件信息以下:\n%@", data);
}
相关文章
相关标签/搜索