数据存储之沙盒

一、沙盒

每个IOS程序都有自己的程序目录(沙盒),与其他系统文件隔离,应用只能访问自己的沙盒(IOS8中已经开放)

应⽤沙盒的文件系统⽬录,如下图所示(假设应用的名称叫Layer)

模拟器应⽤用沙盒的根路径在: (city--online是⽤用户名)

/Users/city--online/Library/Developer/CoreSimulator/Devices/18B16F4E-BB49-41F1-90AE-842283E72C8C/data/Containers/Data/Application/D81121AC-377F-487B-A844-AC3A313D495C

Documents:保存应⽤运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录

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

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

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

//
//  ViewController.m
//  Plist
//
//  Created by City--Online on 15/4/21.
//  Copyright (c) 2015年 CYW. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //获取沙盒根目录
    NSString *home=NSHomeDirectory();
     NSLog(@"沙盒根目录:%@\n\n",home);

    //获取Documents目录 不建议采用
    NSString *documents=[home stringByAppendingPathComponent:@"Documents"];
    NSLog(@"字符串拼接获取Documents:%@\n\n",documents);

    //NSUserDomainMask 代表从用户文件夹下找
    //YES  代表展开路径中的波浪字符“~” NO ~/Documents
    NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
    // 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素
    NSString *documents1=[array objectAtIndex:0];
    NSLog(@"通过方法NSSearchPathForDirectoriesInDomains获取Documents:%@\n\n",documents1);

    //获取tmp文件目录
    NSLog(@"tmp 文件目录:%@\n\n",NSTemporaryDirectory());

    //获取Library/Caches:
    NSArray *arrayCaches=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSLog(@"Library/Caches:%@",arrayCaches[0]);

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

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

 输出:

2015-04-21 13:44:39.565 Plist[2829:130133] 沙盒根目录:/Users/city--online/Library/Developer/CoreSimulator/Devices/18B16F4E-BB49-41F1-90AE-842283E72C8C/data/Containers/Data/Application/1F25A9BC-BB1D-4F5D-88F1-A96E9E0E9EAE

2015-04-21 13:44:39.566 Plist[2829:130133] 字符串拼接获取Documents:/Users/city--online/Library/Developer/CoreSimulator/Devices/18B16F4E-BB49-41F1-90AE-842283E72C8C/data/Containers/Data/Application/1F25A9BC-BB1D-4F5D-88F1-A96E9E0E9EAE/Documents

2015-04-21 13:44:39.566 Plist[2829:130133] 通过方法NSSearchPathForDirectoriesInDomains获取Documents:~/Documents

2015-04-21 13:44:39.566 Plist[2829:130133] tmp 文件目录:/Users/city--online/Library/Developer/CoreSimulator/Devices/18B16F4E-BB49-41F1-90AE-842283E72C8C/data/Containers/Data/Application/1F25A9BC-BB1D-4F5D-88F1-A96E9E0E9EAE/tmp/

2015-04-21 13:44:39.567 Plist[2829:130133] Library/Caches:/Users/city--online/Library/Developer/CoreSimulator/Devices/18B16F4E-BB49-41F1-90AE-842283E72C8C/data/Containers/Data/Application/1F25A9BC-BB1D-4F5D-88F1-A96E9E0E9EAE/Library/Caches
时间: 2024-10-03 11:34:41

数据存储之沙盒的相关文章

ios-IOS如何将复杂的json数据存储在沙盒中

问题描述 IOS如何将复杂的json数据存储在沙盒中 从服务器获取到的json数据比较大,一般在200kb到800k之间,json中包含了几十对key-value,而且有很多数组.对象嵌套,请问我该用哪种方案把这个json缓存到本地比较好.注意,这个json不是固定的,用户可以手动刷新,根据json中的时间标记获取最新的json.加载更多也要获取一个这样的json,但这个不用缓存在本地,只保留最新的一个json数据. 有过相关经验的朋友们来说说你们的解决方案,Android的方案也可以来讲讲,借

SharePoint 2010沙盒解决方案注意事项

沙盒解决方案是 Microsoft SharePoint 2010 中包含的一项功能,此功能使网站集用户能够上载自己的自定义代码解决方案.常见的沙盒解决方案是用户上载自己的 Web 部件. 沙盒 SharePoint 应用程序在一个安全的.受监视的进程中运行,它只能访问 Web 场的有限部分.Microsoft SharePoint 2010 利用功能组合.解决方案库.解决方案监控和验证框架来启用沙盒解决方案. 指定项目信任级别 Visual Studio 通过一个名为 Sandboxed So

iOS开发之应用沙盒

1.应用沙盒概述 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒. 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer). 模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本) /Users/apple/Library/Application Support/iPhone Simulator/6.0/ Applications [备注]默认情况下,模拟器的目录是隐藏的,要想显示出来

数据存储之属性列表Plist

常用的数据存储有属性列表.偏好设置.归档.sqlite.coreData.上一博客了解了沙盒,现在了解下属性列表Plist. 通常通过NSArray.NSDictionary集合类的WriteToFile:atomically方法将他们存储到属性列表中.在属性列表能保存的数据类型如下 所以可以序列化的类有以下这些: NSArray.NSMutableArray.NSDictionary.NSMutableDictionary.NSData.NSMutableData.NSDate.NSStrin

利用内存破坏实现python沙盒逃逸

几周之前心痒难耐的我参与了一段时间的漏洞赏金计划.业余这个漏洞赏金游戏最艰巨的任务就是挑选一个能够获得最高回报的程序.不久我就找到一个存在于Python沙盒中执行的用户提交代码的Web应用程序的bug,这看起来很有趣,所以我决定继续研究它. 进过一段时间的敲打之后,我发现了在Python层实现沙盒逃逸的方法.报告归档了,漏洞几天内及时被修复,得到了一笔不错的赏金.完美!这是一个我的漏洞赏金征程的完美开端.但这篇博文不是关于这篇报告的.总之,从技术的角度来说我发现这个漏洞的过程并不有趣.事实证明回

iOS开发之数据存储之XML属性列表(plist)归档

1.概述 "归档"意思是持久化存储数据.plist文件是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary.NSArray.NSData.NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件(plist文件)中.特别注意的是plist文件不能存储对象. IOS常用文件存储方式有: XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(N

沙盒操作文件——文件操作(NSFileManager)

       iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视频等内容.iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内.默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.               上面的完整路径为:用户->资源库->Application Support->iPhone Simulat

iOS开发之数据存储之SQLite3(包括FMDB)

1.概述 SQLite3是一款开源的嵌入式关系型数据库,可移植性好.易使用.内存开销小. SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中.比如下列的创表语句是合法的: create table t_person(name, age); 为了保证可读性,建议还是把字段类型加上: create table t_person(name text, age integer); SQLite将数据划分为以下几种存储类型: integer : 整型值 real : 浮点值 te

ios-关于xcode模拟器的沙盒路径问题

问题描述 关于xcode模拟器的沙盒路径问题 为什么我在xcode上写的应用程序,获得应用程序的沙盒路径后,里面只有Documents Library tmp文件,找不到APP包,求大神指点 解决方案 在命令行中看看 是不是隐藏了 解决方案二: Ahax Baden malangha 解决方案三: 你说的APP包是什么意思,沙盒就只有数据的 解决方案四: 沙盒时储存数据的没有 app,app里面有沙盒 解决方案五: 沙盒时储存数据的没有 app,app里面有沙盒 解决方案六: 沙盒时储存数据的没