iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒。每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme。沙盒里面的文件可以是照片、声音文件、文本、属性列表等。

沙盒机制简介

沙盒简述:

  1. 每一个APP都有一个存储空间,就是沙盒。

  2. APP之间不能相互通信。

  3. 沙盒根目录结构:Documents、Library、temp。

简述一下Documents、Library、temp的区别:

  1. Documents:用于存储用户数据,iTunes备份和恢复的时候会包括此目录,所以,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下。

  2. Library:包含两个子目录:Caches 和 Preferences。Caches用来存放用户需要换成的文件。Preferences是APP的偏好设置,可以通过NSUserDefaults来读取和设置。

  3. tmp: 用于存放临时文件,这个可以放一些当APP退出后不再需要的文件。

打开模拟器沙盒方法

方法一:前往文件夹打开

/Users/ligang/Library/Application Support/iPhone Simulator/

直接在Finder->前往->前往文件夹,输入上面的内容即可。记住将ligang换成你的电脑用户名。

方法二:通过Finder一步步查找

模拟器上的APP的沙盒实在用户目录下的资源库里面,但是资源库是隐藏文件夹。所以查看沙盒之前,现将隐藏文件夹显示出来。显示隐藏文件的命令:

defaults write com.apple.finder AppleShowAllFiles -bool true

用心的童鞋会发现,隐藏隐藏文件的命令:

defaults write com.apple.finder AppleShowAllFiles -bool false

查找步骤请看图:

关于沙盒机制(SandBox)的介绍大概就是这样,以后面试的时候万一碰到你就可以这么回答。

获取沙盒根目录

获取沙盒根目录,直接调用NSHomeDirectory():

 //获取沙盒根目录
NSString *directory = NSHomeDirectory();
NSLog(@"directory:%@", directory);

控制台输出:

2015-07-22 00:40:16.185 iOSStrongDemo[1605:555658] directory:/var/mobile/Containers/Data/Application/F9418815-51A9-4A0A-A76C-6FD37C400928

这个是真机的路径,大家有时间的话可以看看模拟器的根目录路径。

获取Documents路径

获取Documents路径如下:

//获取Documents路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);

控制台输出:

2015-07-22 00:41:41.397 iOSStrongDemo[1613:556159] path:/var/mobile/Containers/Data/Application/A62B886B-A8F0-4215-B59D-1F505C3997BD/Documents

获取Documents文件夹目录,第一个参数是说明获取Doucments文件夹目录,第二个参数说明是在当前应用沙盒中获取。

获取Library路径

 //获取Library路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);

控制台输出:

2015-07-22 00:43:15.803 iOSStrongDemo[1619:556638] /var/mobile/Containers/Data/Application/17300507-4643-4DE7-BC68-E13DB19C8D98/Library

获取Caches路径

//获取Caches路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSLog(@"path:%@", path);

控制台输出:

2015-07-22 00:44:31.383 iOSStrongDemo[1626:557083] path:/var/mobile/Containers/Data/Application/1E945B52-E29D-4041-A489-1AA1B11BB960/Library/Caches

获取tmp路径

NSString *tmp = NSTemporaryDirectory();
NSLog(@"tmp:%@", tmp);

控制台输出:

2015-07-22 00:46:07.846 iOSStrongDemo[1632:557537] tmp:/private/var/mobile/Containers/Data/Application/4BE02307-1CC5-47E8-BEA8-CEBB7ED5A402/tmp/

以上是iOS开发中获取沙盒路径的方法,也许还有更好的获取方法等待我们去发现。后面我们还会讲到关于在沙盒里进行读写文件操作。

iOS之沙盒机制和如何获取沙盒路径的更多相关文章

  1. iOS创建、删除文件夹、获取沙盒路径

    1.获取沙盒路径 // 获取沙盒路径 NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent: ...

  2. QF——iOS沙盒机制

    iOS沙盒机制: 什么是沙盒机制?  点击进入  点击进入 沙盒机制(SandBox)是一种安全体系,它规定了APP的所有文件数据都必须存储在这片区域.所有非代码文件的数据都保存在这片区域. 沙盒里有 ...

  3. iOS - 沙盒机制(SandBox)和获取沙盒路径

    iOSAPP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URLScheme.沙盒里面的文件可以是照片.声音文件.文本 ...

  4. iOS沙盒(sandbox)机制及获取沙盒路径

    一.每个iOS应用SDK都被限制在沙盒中,沙盒相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1).应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. (2).应 ...

  5. iOS沙盒(sandbox)机制及获取沙盒路径

    一. 每个iOS应用SDK都被限制在“沙盒”中,“沙盒”相当于一个加了仅主人可见权限的文件夹,苹果对沙盒有以下几条限制. (1)应用程序可以在自己的沙盒里运作,但是不能访问任何其他应用程序的沙盒. ( ...

  6. iOS学习7:iOS沙盒(sandBox)机制(一)之获取沙盒路径及目录说明(转)

    转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下 ...

  7. IOS 学习之 iOS沙盒(sandbox) 介绍 沙盒机制 文件操作(一)

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

  8. iOS 阶段学习第25天笔记(iOS沙盒机制介绍)

    iOS学习(OC语言)知识点整理 一.iOS沙盒机制介绍 1)概念: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒 ...

  9. iOS沙盒机制介绍,Block 的介绍

    一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...

随机推荐

  1. Jq_选择器、效果函数

    JQuery 选择器 选择器                     实例                                   选取 *                         ...

  2. mysql数据库回滚

    在应用$mysqli时,因没常用到数据回滚,老忘,整理下,做个记录. $mysqli->autocommit(FALSE);//自动提交设置关闭 $mysqli->query(" ...

  3. 优之星S900平板电脑root方法

    优之星S900root方法: 尝试百度一键root安卓的apk版本root失败. 电脑上下载百度一键root的Windows版本,平板设置→开发者选项→允许USB调试√,保持唤醒状态√,安全设置→允许 ...

  4. Eclipse中Ant的配置与测试 转

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  5. .NET简谈反射(动态调用)

    我们继续C#基础知识的学习,这篇文章主要要讲的是我们C#程序员迈向高级C#程序员的关键性的一步. 有的朋友会说事实不是这样的,我不用反射就不能开发吗?当然可以,但是用与不用肯定是不一样的,任何复杂抽象 ...

  6. 20145218 《Java程序设计》第四周学习总结

    20145218 <Java程序设计>第四周学习总结 教材学习内容总结 继承 继承共同行为 继承基本上就是避免多个类间重复定义共同行为. 继承的三个好处:减少代码冗余:维护变得简单:扩展变 ...

  7. 3D正方体

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. Compound Interest Calculator3.0续

    1.你写的程序能让客户随意操作吗?误输入数据.不小心做了非常规的操作程序是什么反应? 2.如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额) ...

  9. jquery 设置css样式

       $("#61dh a").css('color', 多个样式属性 var divcss = { background: '#EEE', width: '478px', mar ...

  10. VoltDB介绍——本质:数据保存在内存,充分利用CPU,单线程去锁,底层数据结构未知

    转自:http://blog.csdn.net/ransom0512/article/details/50440316 简介 VoltDB数据库是一个分布式,可扩展,shared-nothing的内存 ...