标签:
一、概述
1.IOS中的沙盒机制(SandBox)是一种安全体系,沙盒的本质就是一个文件夹,名字是通过UUID符分配,它包含了三个文件Document文件夹、Library文件夹、tmp文件夹,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表、数据库文件、文本文件等。
2.应用程序沙盒的作用:
(1)每个应用程序都在自己的沙盒内
(2)不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容
(3)应用程序向外请求或接收数据都需要经过权限认证
提示:但是不幸的是,这两个路径打开后的文件名,还是经过UUID符编码过的
4.沙盒中各个文件的作用
(1)Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
(2)Library:存储程序的默认设置或其它状态信息;
(3)Library/Caches:存放缓存文件,如视频,音乐等,iTunes不会备份此目录,此目录下文件不会在应用退出删除
(4)Library/Preferences:存放的是通过NSUserDefault创建的.plist文件,NSUserDefault是iOS提供的本地化数据存储方式,会在沙盒中自动创建一个.plist的配置文件,将数据保存起来,在读取时,以NSDictionary字典来进行接收
(5)tmp:用于存储临时文件,比如:下载的zip包,解压后的再删除
注意:iTunes在与iPhone同步时,备份所有的Documents和Library文件,iPhone在重启时,会丢弃所有的tmp文件。
5.bundle
生成 iOS 应用程序时,Xcode 将它捆绑成一个包。捆绑包 (bundle) 是文件系统中的一个目录,它将相关资源成组在一个地方。一个 iOS 应用程序捆绑包中,含有其可执行代码和支持资源文件(如应用程序图标、工程中添加的图片、创建的.plist文件和已本地化的内容)。
注意:沙箱的概念和bundle没直接关系,沙箱只是说明程序资源与外界隔离,IOS8以后.app的包不存在于沙盒中了。
二、用法
//获取根目录 NSString *homePath = NSHomeDirectory(); NSLog(@"Home目录:%@",homePath); //获取Documents文件夹目录,第一个参数是说明获取Doucments文件夹目录,第二个参数说明是在当前应用沙盒中获取,所有应用沙盒目录组成一个数组结构的数据存放 NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsPath = [docPath objectAtIndex:0]; NSLog(@"Documents目录:%@",documentsPath); //获取Cache目录 NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachePath = [cacPath objectAtIndex:0]; NSLog(@"Cache目录:%@",cachePath); //Library目录 NSArray *libsPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libPath = [libsPath objectAtIndex:0]; NSLog(@"Library目录:%@",libPath); //temp目录 NSString *tempPath = NSTemporaryDirectory(); NSLog(@"temp目录:%@",tempPath);
2015-07-22 22:50:45.869 测试沙盒路径[54790:2500260] Home目录:/Users/songshuhao/Library/Developer/CoreSimulator/Devices/6E660574-CD5D-43E4-BB4E-126B04CC0B79/data/Containers/Data/Application/4C911A78-52BA-4A5E-943D-A09B5DD0A267 2015-07-22 22:50:45.870 测试沙盒路径[54790:2500260] Documents目录:/Users/songshuhao/Library/Developer/CoreSimulator/Devices/6E660574-CD5D-43E4-BB4E-126B04CC0B79/data/Containers/Data/Application/4C911A78-52BA-4A5E-943D-A09B5DD0A267/Documents 2015-07-22 22:50:45.870 测试沙盒路径[54790:2500260] Cache目录:/Users/songshuhao/Library/Developer/CoreSimulator/Devices/6E660574-CD5D-43E4-BB4E-126B04CC0B79/data/Containers/Data/Application/4C911A78-52BA-4A5E-943D-A09B5DD0A267/Library/Caches 2015-07-22 22:50:45.870 测试沙盒路径[54790:2500260] Library目录:/Users/songshuhao/Library/Developer/CoreSimulator/Devices/6E660574-CD5D-43E4-BB4E-126B04CC0B79/data/Containers/Data/Application/4C911A78-52BA-4A5E-943D-A09B5DD0A267/Library 2015-07-22 22:50:45.871 测试沙盒路径[54790:2500260] temp目录:/Users/songshuhao/Library/Developer/CoreSimulator/Devices/6E660574-CD5D-43E4-BB4E-126B04CC0B79/data/Containers/Data/Application/4C911A78-52BA-4A5E-943D-A09B5DD0A267/tmp/
标签:
原文地址:http://www.cnblogs.com/songshuhaoNB/p/4667479.html