默认情况下,每个沙盒必含有3个文件夹:Documents, Library 和 tmp

一、沙盒(sandbox)
出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其创建一个家目录,这个家目录就是应用程序的沙盒。
家目录下共有四个子目录:

  1-Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
  2-AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
  3-Library 目录:这个目录下有两个子目录:Caches 和 Preferences
        Preferences 目录包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
        Caches 目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
  4-tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

获取这些目录路径的方法:

- (void)viewDidLoad {
[super viewDidLoad]; [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier]; //取得Documents中某个文件的路径
NSString *path = [[self documentFolder] stringByAppendingPathComponent:@"image.png"]; //获取tmp目录
NSString *tempPath = NSTemporaryDirectory(); //1,获取家目录路径的函数:
NSString *homeDir = NSHomeDirectory(); //2,获取Documents目录路径/Caches目录路径的方法: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *docDir = [paths objectAtIndex:]; //3,获取tmp目录路径的方法:
NSString *tmpDir = NSTemporaryDirectory(); //4,获取应用程序程序包中资源文件路径的方法: //例如获取程序包中一个图片资源(apple.png)路径的方法: NSString *imagePath = [[NSBundle mainBundle]pathForResource:@"apple"ofType:@"png"]; UIImage *appleImage = [[UIImage alloc]initWithContentsOfFile:imagePath]; //代码中的mainBundle类方法用于返回一个代表应用程序包的对象。
} //取得Documents路径的方法:
- (NSString *)documentFolder {
return [NSHomeDirectory()stringByAppendingPathComponent:@"Documents"];
} //补充:取得应用程序包(即bundle)的路径
- (NSString *)bundleFolder {
return [[NSBundle mainBundle]bundlePath];
}

二、文件IO

1,将数据写到Documents目录:

- (BOOL)writeApplicationData:(NSData*)data toFile:(NSString*)fileName {

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

    NSString *docDir = [paths objectAtIndex:];

    if(!docDir) {

        NSLog(@"Documents directory not found!");

        return NO;

    }

    NSString *filePath = [docDir stringByAppendingPathComponent:fileName];

    return [data writeToFile:filePath atomically:YES];

}

2,从Documents目录读取数据:

- (NSData *)applicationDataFromFile:(NSString *)fileName {

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

    NSString *docDir = [paths objectAtIndex:];

    NSString *filePath = [docDir stringByAppendingPathComponent:fileName];

    NSData *data = [[[NSData alloc]initWithContentsOfFile:filePath]autorelease];

    return data;

}
 

数据存储--沙盒sandBox的更多相关文章

  1. 沙盒SandBox

    每个App都有自己的沙盒,也就是一个存储空间.App之间没有权限访问对方的沙盒资源.沙盒的目录下有三个文件夹:Documents.Library.temp 目录结构 Documents:用于存储用户数 ...

  2. iOS应用软件沙盒sandbox相关知识(整理)

    1.iOS沙盒机制原理 iOS应用程序只能在该程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...

  3. IOS学习之IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...

  4. iOS沙盒(sandbox)机制及获取沙盒路径

    一.每个iOS应用SDK都被限制在沙盒中,沙盒相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1).应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. (2).应 ...

  5. IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作   作者:totogo2010 ,发布于2012-9-21,来源:CSDN   目录: IOS学习之IOS沙盒(sandbox)机制和文件操作( ...

  6. iOS学习之iOS沙盒(sandbox)机制和文件操作1

    iOS学习之iOS沙盒(sandbox)机制和文件操作 接上篇 iOS学习之iOS沙盒(sandbox)机制和文件操作(一) 我们看看如何获取应用程序沙盒目录.包括真机的沙盒的目录. 1.获取程序的H ...

  7. iOS开发-沙盒(sandbox)机制

    苹果前天发的财报,貌似现在用ios系统的比以前又多了一些,但是大家的iPhone购买的渠道也是五花八门,有的从非正规渠道购买的iPhone里的操作系统已经被越狱过,越狱这个事情和Android的roo ...

  8. iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)

    转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下 ...

  9. IOS 学习之 iOS沙盒(sandbox) 介绍 沙盒机制 文件操作(一)

    1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...

随机推荐

  1. JS里面利用random()实现随机颜色更换

    首先你需要一个div <div id="box"></div> 然后给这个div加入CSS属性 #box{width:500px;height:500px; ...

  2. c++面试题

    转自http://blog.csdn.net/jingxuewang110/article/details/6789557/ 1.new.delete.malloc.free关系 delete会调用对 ...

  3. ZipFile解压文件不改变压缩包内文件修改日期的方法

    本文参考http://stackoverflow.com/questions/9813243/extract-files-from-zip-file-and-retain-mod-date-pytho ...

  4. java.net.SocketException: No buffer space available (maximum connections reached?): JVM_Bind

    1. 启动注册表编辑器. HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters 2. 新建 值名称:MaxUser ...

  5. GD图片(画布)的制作及验证码的应用

    创建画布:创建画布的函数有 imagecreatetruecolor(width,height);创建画布 width指画布的宽height指画布的高 imagecolorallocate(img,r ...

  6. Android Dex文件格式(二)

    第三块: 数据区         索引区中的最终数据偏移以及文件头中描述的map_off偏移都指向数据区, 还包括了即将要解析的class_def_item, 这个结构非常重要,下面就开始解析   c ...

  7. python tm_isdst = -1, 0, 1 datetime module

    Python 里的tm_isdst DST 是daylight saving time, 意思是:夏令时 在python的time, datetime模块下,按照struct_time格式输出时间,最 ...

  8. NSDate 刚刚、几分钟、几小时

    - (NSString *)minutesAgo { NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @ ...

  9. PHP $_FILES中error返回值详解

    $_FILES['file']['error']值 UPLOAD_ERR_OK: 0 //正常,上传成功 UPLOAD_ERR_INI_SIZE: 1 //上传文件大小超过服务器允许上传的最大值,ph ...

  10. angularJS--ngSelect

    给select绑定ng-model时,经常会出现首选第一个option值是undefined.如图, 源代码 <select ng-model="newSupplier.company ...