iOS之沙盒路径

前言

今天去面试了, 面试官递给了我一个笔记本电脑."来, 试着把这个卖给我"于是我就把本本夹在腋下, 跑出大厦, 骑着我的电动车回家去了.最后, 他还是给我来电话了,"马上把电脑送回来!","给我2000块, 它就是你的了".

沙盒路径.jpeg

介绍

  • 每一个APP都有一个存储空间,就是沙盒。APP之间不能相互通信。沙盒根目录结构:Documents、Library、temp

  • iOS的沙盒下面主要包含该以下三个文件:

    Home.png

    路径是这样的:

 // 获取沙盒主目录路径
NSString *homeDir = NSHomeDirectory();
 // 模拟器下的路径
/Users/apple/Library/Developer/CoreSimulator/Devices/12E868D1-2332-4215-B25E-3D5C8E3D1B07/data/Containers/Data/Application/3AE2AB9E-053B-41BF-B3D0-688F96A0D2F1
 // 真机下的路径
/var/mobile/Containers/Data/Application/8194D1EB-4026-49F6-ADAD-458355533828
 // 应用的标识再往下就是沙盒了.系统生成.
(3AE2AB9E-053B-41BF-B3D0-688F96A0D2F1),
(8194D1EB-4026-49F6-ADAD-458355533828)

*注:每次编译代码会生成新的沙盒, 注意是编译不是启动,所以模拟器或者真机运行你每次运行所得到的沙盒路径都是不一样,就是上面提到的标识符不一样,正式版app真机的话启动杀死,不会生成新的沙盒.

一、Documents
// 获取Documents目录路径
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
  • A 此文件夹是默认备份的,备份到iCloud
注:iCloud的备份,会通过Wi-Fi每天自动备份用户iOS设备。
1.app的home目录下的所有东西都会被备份,除了应用Bundle本身、缓存目录和temp目录。
2.已购买的音乐、应用、书籍、Camera Roll、设备设置、主屏幕、App组织、消息、铃声也都会被备份。
3.由于备份通过无线进行,并且为每个用户存储在iCloud中,应用需最小化自己存储的数据数量。
4.大文件会延长备份时间,并且消耗用户的可用iCloud空间。
  • B大文件要做 非备份设置(如视频) 审核的时候会被拒:
// 非备份设置代码如下
// 需要导入
#include <sys/xattr.h>
- (BOOL)addShipBackUpAttributeToUrl:(NSString *)url {
    NSURL *itemUrl = [NSURL URLWithString:url];
    const char *filePath = [[itemUrl path] fileSystemRepresentation];
    const char* attrName = "com.apple.MobileBackup";
    u_int8_t attrValue = 1;
    
    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
    return result == 0;
}
  • C此目录储存规则
关键数据
用户创建的数据,或者不能重新生成的数据。
应该存放在<Application_Home>/Documents目录下,并且不应该标记为"do not backup"属性。
关键数据在低存储空间时也会保留,而且会被iCloud或iTunes备份。
  • D经常存储的一些东西
1.APP的数据库表.
2.必要的一些图标本地缓存.
3.重要的plist文件,如当前登录人的信息.
二、Library
  • 里面包括两个文件夹


    Library.png
// 获取Library的目录路径
NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
  • A、Caches

储存规则

// 获取Caches目录路径
NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
缓存数据
可以重新下载或生成的数据,而且没有这些数据也不会妨碍用户离线使用应用的功能。
缓存数据应该保存在<Application_Home>/Library/Caches目录下。
缓存数据在设备低存储空间时可能会被删除,iTunes或iCloud不会对其进行备份。

系统的缓存都放在这个文件夹下面(主要是网路).
当访问网络时系统自动会把访问的url,以数据库的方式存放在此目录下面.

Caches.png

其中一个数据库的内容:


url.png

Snapshots默认文件夹

// 系统截图文件夹, 我们没有权限访问
Snapshots .png
  • B、Preferences(默认备份的)

NSUserDefaults就是默认存放在此文件夹下面,如下代码

// 获取Preferences目录路径
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
 NSString *preferences = [[paths firstObject] stringByAppendingString:@"/Preferences"];

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 [defaults setObject:@"有毒的程序猿" forKey:@"firstName"];
 [defaults setInteger:100 forKey:@"age"];   
 [defaults synchronize];
// 这里NSUserDefaults 是以key - value的形式存储为.plist文件.
// 在这不得不多说一下[defaults synchronize]的作用.
// 其实可以不调用,文件也可以正常存储,不过就是异步的.
// [defaults synchronize] 起到了立刻储存的作用.
Preferences.png
三、tmp
  • 临时文件夹(系统会不定期删除里面的文件)
// 获取tmp目录路径
NSString *tmpDir = NSTemporaryDirectory();   
应用需要写到本地存储,内部使用的临时数据,但不需要长期保留使用。
临时数据应该保存在<Application_Home>/tmp目录。
系统可能会清空该目录下的数据,iTunes或iCloud也不会对其进行备份。
应用在不需要使用这些数据时,应该尽快地删除临时数据,以避免浪费用户的存储空间。
四、SystemData
  • 新加入的一个文件夹, 存放系统的一些东西,暂时没研究其用法,有兴趣的同学可以研究其储存规则.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容