Xcode6 app沙盒目录
2015-08-24 13:37
232 查看
从Xcode5 到Xcode 6 iOS应用的沙盒目录有所变化,基于Xcode5已经过时,所以这里就只介绍Xcode6 下的文件目录:
1、下图展示了Xocde6中app的目录
由上图可以看到Xcode6是通过 设备管理-》应用管理来组织文件的,在整个设备中存在不同操作系统的模拟器(通过GUID来命名),每个模拟器下有各自安装的应用(也是通过GUID来区分的),每个应用的data/containers目录下分别存在Bundle,Data,Shared三个目录。
Bundle文件夹下的存放的是应用的包,如下图
data文件夹下存放的是应用的数据文件,如下图
其中NSUserDefault(属性文件)文件存放在Libaray/Preference文件目录下
2、各个文件的作用
<Application_Home>/AppName.app:存放应用程序自身
<Application_Home>/Documents/:存放用户文档和应用数据文件
<Application_Home>/Library/:应用程序规范的顶级目录,下面有一些规范定义的的子目录,当然也可以自定义子目录,用于存放应用的文件,但是不宜存放用户数据文件,和document一样会被itunes同步,但不包括caches子目录
<Application_Home>/Library/Preferences,这里存放程序规范要求的首选项文件
<Application_Home>/Library/Caches,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下
<Application_Home>/tmp/,保存应用数据,但不需要持久化的,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候做
3、存储策略
(1)程序运行状态一般用NSUserDefaults来存储。
(2)用户信息或者数据库文件一般以单文件的形式存放在Documents文件夹下,这样在app更新之后数据仍然存在
(3)很大的数据文件一般放在Caches文件夹下,这样避免itunes同步。
(4)不需要持久化保存的临时文件放在tmp文件夹下,在不需要的时候就会被删除。
4、代码获取路径
(1)获取沙盒数据路径
NSString *bundlePath =NSHomeDirectory();
NSLog(@"沙盒路径:%@",bundlePath);
(2)获取Documents文件路径
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentPath = [pathsobjectAtIndex:0];
NSLog(@"document路径:%@",documentPath);
(3)获取Library文件路径
paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
NSUserDomainMask, YES);
NSString *libraryPath = [paths
objectAtIndex:0];
NSLog(@"library路径:%@",libraryPath);
(4)获取Caches文件路径
NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
NSString *cachesPath = [pathsobjectAtIndex:0];
NSLog(@"caches路径:%@",cachesPath);
(5)获取temp文件路径
NSString *tempPath =NSTemporaryDirectory();
NSLog(@"temp路径:%@",tempPath);
1、下图展示了Xocde6中app的目录
由上图可以看到Xcode6是通过 设备管理-》应用管理来组织文件的,在整个设备中存在不同操作系统的模拟器(通过GUID来命名),每个模拟器下有各自安装的应用(也是通过GUID来区分的),每个应用的data/containers目录下分别存在Bundle,Data,Shared三个目录。
Bundle文件夹下的存放的是应用的包,如下图
data文件夹下存放的是应用的数据文件,如下图
其中NSUserDefault(属性文件)文件存放在Libaray/Preference文件目录下
2、各个文件的作用
<Application_Home>/AppName.app:存放应用程序自身
<Application_Home>/Documents/:存放用户文档和应用数据文件
<Application_Home>/Library/:应用程序规范的顶级目录,下面有一些规范定义的的子目录,当然也可以自定义子目录,用于存放应用的文件,但是不宜存放用户数据文件,和document一样会被itunes同步,但不包括caches子目录
<Application_Home>/Library/Preferences,这里存放程序规范要求的首选项文件
<Application_Home>/Library/Caches,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下
<Application_Home>/tmp/,保存应用数据,但不需要持久化的,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候做
3、存储策略
(1)程序运行状态一般用NSUserDefaults来存储。
(2)用户信息或者数据库文件一般以单文件的形式存放在Documents文件夹下,这样在app更新之后数据仍然存在
(3)很大的数据文件一般放在Caches文件夹下,这样避免itunes同步。
(4)不需要持久化保存的临时文件放在tmp文件夹下,在不需要的时候就会被删除。
4、代码获取路径
(1)获取沙盒数据路径
NSString *bundlePath =NSHomeDirectory();
NSLog(@"沙盒路径:%@",bundlePath);
(2)获取Documents文件路径
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentPath = [pathsobjectAtIndex:0];
NSLog(@"document路径:%@",documentPath);
(3)获取Library文件路径
paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
NSUserDomainMask, YES);
NSString *libraryPath = [paths
objectAtIndex:0];
NSLog(@"library路径:%@",libraryPath);
(4)获取Caches文件路径
NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
NSString *cachesPath = [pathsobjectAtIndex:0];
NSLog(@"caches路径:%@",cachesPath);
(5)获取temp文件路径
NSString *tempPath =NSTemporaryDirectory();
NSLog(@"temp路径:%@",tempPath);
相关文章推荐
- 关于Android studio的几篇网文
- android TextView 属性大全
- Android SDK的安装与环境变量配置
- ios swift监听键盘
- 《AndroidStudio每日一贴》6. 如何使用基础的自动补全?
- Android 图片缓存处理
- Android eclipse 代码生成插件
- Android 背景模糊
- iOS 常用一些小工具
- Android屏幕适配全攻略(最权威的官方适配指导)
- android studio模板
- 如何为你的App获取用户的反馈和5星级评论
- Android不同分辨率的Drawable资源配置
- 快速搭建Android开发环境ADT-Bundle及Hello World
- 基于adt-bundle的android开发环境搭建
- 快速的Android开发环境搭建ADT-Bundle及Hello World
- Android 5.0的调度作业JobScheduler
- iOS编程——OC viewController 传值常用方法Delegate和Block的使用
- iOS8 CLLocationManager 的改变导致 locationManager didUpdateLocations不能被调用的解决办法
- Android的硬件加速