`
wushuo30
  • 浏览: 2487 次
社区版块
存档分类
最新评论

ISO 沙盒的⽂文件系统⺫录分析以及读取

 
阅读更多
 

应⽤用程序包:(上图中的Layer)包含了所有的资源⽂文件和可执⾏行⽂文件 Documents:保存应⽤用运⾏行时⽣生成的需要持久化的数据,iTunes同步设备时

会备份该⺫⽬目录。例如,游戏应⽤用可将游戏存档保存在该⺫⽬目录

tmp:保存应⽤用运⾏行时所需的临时数据,使⽤用完毕后再将相应的⽂文件从该⺫⽬目录 删除。应⽤用没有运⾏行时,系统也可能会清除该⺫⽬目录下的⽂文件。iTunes同步设备 时不会备份该⺫⽬目录

Library/Caches:保存应⽤用运⾏行时⽣生成的需要持久化的数据,iTunes同步 设备时不会备份该⺫⽬目录。⼀一般存储体积⼤大、不需要备份的⾮非重要数据

Library/Preference:保存应⽤用的所有偏好设置,iOSSettings(设置) 应⽤用会在该⺫⽬目录中查找应⽤用的设置信息。iTunes同步设备时会备份该⺫⽬目录 

 

 沙盒根⺫⽬目录:NSString *home = NSHomeDirectory(); Documents:(2种⽅方式)

利⽤用沙盒根⺫⽬目录拼接”Documents”字符串
NSString *home = NSHomeDirectory();
NSString *documents = [home
stringByAppendingPathComponent:@"Documents"]; // 不建议采⽤用,因为新版本的操作系统可能会修改⺫⽬目录名

利⽤用NSSearchPathForDirectoriesInDomains函数

// NSUserDomainMask 代表从⽤用户⽂文件夹下找

// YES 代表展开路径中的波浪字符“~”

NSArray *array =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
   NSUserDomainMask, NO);

// iOS中,只有⼀一个⺫⽬目录跟传⼊入的参数匹配,所以这个集合⾥里⾯面只有⼀一个元素 NSString *documents = [array objectAtIndex:0]; 

tmp:NSString *tmp = NSTemporaryDirectory();

Library/Caches:(Documents类似的2种⽅方法)

利⽤用沙盒根⺫⽬目录拼接”Caches”字符串

利⽤用NSSearchPathForDirectoriesInDomains函数(将函数的第2个参数 改为:NSCachesDirectory即可)

Library/Preference:通过NSUserDefaults类存取该⺫⽬目录下的设置信息

属性列表是⼀一种XML格式的⽂文件,拓展名为plist

如果对象是NSStringNSDictionaryNSArrayNSDataNSNumber等类型,就可以使⽤用writeToFile:atomically:⽅方 法直接将对象写到属性列表⽂文件中 

 

 

属性列表-恢复NSDictionary

 将⼀一个NSDictionary对象归档到⼀一个plist属性列表中

// 将数据封装成字典
NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [dict setObject:@"⺟母鸡" forKey:@"name"];

[dict setObject:@"15013141314" forKey:@"phone"]; [dict setObject:@"27" forKey:@"age"];
// 将字典持久化到Documents/stu.plist⽂文件中
[dict writeToFile:path atomically:YES];

 

 

读取属性列表,恢复NSDictionary对象

// 读取Documents/stu.plist的内容,实例化NSDictionary

NSDictionary *dict = [NSDictionary
  dictionaryWithContentsOfFile:path]; 

NSLog(@"name:%@", [dict objectForKey:@"name"]); NSLog(@"phone:%@", [dict objectForKey:@"phone"]); NSLog(@"age:%@", [dict objectForKey:@"age"]); 

 

 

偏好设置 

 

很多iOS应⽤用都⽀支持偏好设置,⽐比如保存⽤用户名、密码、字体⼤大⼩小等设 置,iOS提供了⼀一套标准的解决⽅方案来为应⽤用加⼊入偏好设置功能

每个应⽤用都有个NSUserDefaults实例,通过它来存取偏好设置

⽐比如,保存⽤用户名、字体⼤大⼩小、是否⾃自动登录
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"itcast" forKey:@"username"];
[defaults
setFloat:18.0f forKey:@"text_size"];
[defaults
setBool:YES forKey:@"auto_login"]; 

 读取上次保存的设置

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *username = [defaults stringForKey:@"username"];
float textSize = [defaults
floatForKey:@"text_size"];
BOOL autoLogin = [defaults
boolForKey:@"auto_login"];

注意:UserDefaults设置数据时,不是⽴立即写⼊入,⽽而是根据时间戳定时地把缓 存中的数据写⼊入本地磁盘。所以调⽤用了set⽅方法之后数据有可能还没有写⼊入磁盘应 ⽤用程序就终⽌止了。出现以上问题,可以通过调⽤用synchornize⽅方法强制写⼊入

[defaults synchornize];

 

  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics