文档章节

iOS沙盒路径及路径下数据的存储和读取

海二少
 海二少
发布于 2017/08/25 10:59
字数 989
阅读 67
收藏 0

iOS应用都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制。

    (1)、应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒。

    (2)、应用程序间不能共享数据,沙盒里的文件不能被复制到其他应用程序文件夹中,也不能把其他应用程序文件夹中的文件复制到沙盒里。

    (3)、苹果禁止任何读、写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中。

    (4)、沙盒根目录里有三个文件夹:Documents,一般应该把应用程序的数据文件存到这个文件夹里,用于存储用

沙盒就是应用程序的安装过程中、系统为每个单独的应用程序生成它的主目录和一些关键的子目录  —文件夹

沙盒机制是一种安全体系,它规定了应用程序只能在本应用程序沙盒中读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、音频、视频、属性列表(偏好设置)和文本文件等。

优点 安全 每个应用程序都在自己的沙盒内 不能随意跨越自己的沙盒区访问别的应用程序沙盒的内容,应用程序向外请求或接受数据都需要经过权限认证

缺点 文件访问受限 访问文件不灵活

 

怎么去到沙盒下?

首先在代码中打印沙盒路径,

NSLog(@"路径%@",NSHomeDirectory());

运行代码,控制台输出:

 

在finder中command+shift+g 前往文件夹把输出它打印的沙盒路径

 

如上图我们看到的NSHomeDirectory()  // 程序主目录,可见子目录(3个):Documents、Library、tmp,library下有caches,he

Documents :保存应用运行时生成的需要持久化的数据,iTunes同步设备时 会备份该目录 。例如,游戏应用可将游戏存档保存在该目录
tmp :保存应用运行时所需的 临时数据 ,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录
Library/Caches :保存应用运行时生成的需要持久化的数据,iTunes同步设备时 不会备份该目录 。一般存储体积大、不需要备份的非重要数据
Library/Preference :保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时 会备份该目录


去沙盒路径的第一种方法,拿去Documents为列
[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];其他的都一样  

第二种方法
[NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES)[0]; // 程序目录,不能存任何东西
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];//文档目录,需要ITUNES同步备份的数据存这里,可存放用户数据
[[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0] stringByAppendingFormat:@"/Preference"];// 配置目录,配置文件存这里
[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0]stringByAppendingFormat:@"/Caches"];//缓存目录,系统永远不会删除这里的文件,ITUNES会删除

NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];// 临时缓存目录,APP退出后,系统可能会删除这里的内容

沙盒路径下数据的存储

 

    //存数据

    NSString * sandBoxpath = [NSHomeDirectory()stringByAppendingPathComponent:@"/Documents/save"];

    NSString * stroeSting  =@"yi";

    [stroeStingwriteToFile:sandBoxpathatomically:YESencoding:NSUTF8StringEncodingerror:nil];

    //取数据

    NSString * checkString = [[NSStringalloc]initWithContentsOfFile:[NSHomeDirectory()stringByAppendingPathComponent:@"/Documents/save"]encoding:NSUTF8StringEncodingerror:nil];

    NSLog(@"取出的数据是:%@",checkString);

 

去到沙盒下看下

 

确实我们写入的文件是存在的

 

看下控制台打印

 

2016-06-30 08:52:32.090 Store[814:16463] 取出的数据是:yi

 

也就是說这个字符串是写入文件的。

© 著作权归作者所有

海二少
粉丝 0
博文 87
码字总数 48854
作品 0
程序员
私信 提问
iOS应用存储数据的常用的方式之plist和归档

iOS应用创建的数据存储方式 plist文件,是XML属性的列表形式 归档(遵循协议) SQLite(需要自己写sql语句) Core Data 苹果对的一个封装 今天我们先来说说文件,需要知道一个概念 沙盒文件 每一个...

追逐iOS
04/20
0
0
ios应用数据存储方式(XML属性列表-plist) - 转

一.ios应用常用的数据存储方式   1.plist(XML属性列表归档)   2.偏好设置   3.NSKeydeArchiver归档(存储自定义对象)   4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数...

久依
2018/12/12
0
0
iOS Sandbox是个什么鬼?

在iOS平台上,每个app都有一个存储空间,用以存储照片、声音文件、文本、属性列表等,我们称之为沙盒。在沙盒里,app可以自己读写文件,但仅限于自己的沙盒,不可访问其他app沙盒,不可进行相...

小麦麦子
2015/07/20
480
1
iOS学习之iOS沙盒(sandbox)机制和文件操作(一)

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

孔俊
2013/07/02
1K
0
IOS沙盒(sandbox)机制和文件操作(一)

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

jackyyang
2012/07/14
2.9K
1

没有更多内容

加载失败,请刷新页面

加载更多

CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
6分钟前
0
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
6
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部