iOS沙盒机制

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

1.1、每个应用程序都有自己的存储空间
 1.2、应用程序不能翻过自己的围墙去访问别的存储空间的内容
 1.3、应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行。
     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:sandbox对应用程序执行各种操作的权限限制。

 //获得document文件路径,名字方便记忆
+(NSString *)documentsPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
return [paths objectAtIndex:];
} //获取Cache目录
+(NSString *)cachePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
return [paths objectAtIndex:];
}
//获取Library目录
+(NSString *)libraryPath{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
return [paths objectAtIndex:];
}
//获取tmp目录
+(NSString *)tmpPath{
NSString *tmpDir = NSTemporaryDirectory();
return tmpDir;
}
+(NSString *)homePath{
NSString *paths = NSHomeDirectory();
return paths;
}
//获得document文件路径,名字方便记忆
+(NSString *) DocumentPath:(NSString *)filename {
NSString *documentsPath = [self documentsPath];
//NSLog(@"documentsPath=%@",documentsPath);
return [documentsPath stringByAppendingPathComponent:filename];
} //====================================================================================//
//获得document文件路径
+(NSString *)fullpathOfFilename:(NSString *)filename {
NSString *documentsPath = [self documentsPath];
// NSLog(@"documentsPath=%@",documentsPath);
return [documentsPath stringByAppendingPathComponent:filename];//这里就是 documentsPath + filePath
} //写入文件沙盒位置NSDictionary
+(void)saveNSDictionaryForDocument:(NSDictionary *)list FileUrl:(NSString*) FileUrl {
NSString *f = [self fullpathOfFilename:FileUrl];//调用了前面一个方法
[list writeToFile:f atomically:YES];
}
/*
* resourcePath: /Users/HeYang/Library/Developer/CoreSimulator/Devices/-
* -A089E19C-0F9D-4D69-AA33-D253157E4B94/data/Containers/Bundle/Application/088B4C6E-A765-4CFE-AD9B-2F12E9E0AB28/OCUITest.app
*/
//====================================================================================// //NSDictionary对象写入文件存放到工程位置
+(void)saveNSDictionaryForProduct:(NSDictionary *)list FileUrl:(NSString*) FileUrl{
NSString *ProductPath =[[NSBundle mainBundle] resourcePath];
NSString *f=[ProductPath stringByAppendingPathComponent:FileUrl];//这里就是 resourcePath + filePath
[list writeToFile:f atomically:YES];
} //Array写入文件 -> 工程
+(void)saveOrderArrayListProduct:(NSMutableArray *)list FileUrl:(NSString*)FileUrl {
NSString *ProductPath =[[NSBundle mainBundle] resourcePath];
NSString *f=[ProductPath stringByAppendingPathComponent:FileUrl];
[list writeToFile:f atomically:YES];
}
//Array对象 写入文件 -> 沙盒
+(void)saveOrderArrayList:(NSMutableArray *)list FileUrl:(NSString*) FileUrl{
NSString *f = [self fullpathOfFilename:FileUrl];
[list writeToFile:f atomically:YES];
}
//加载文件沙盒的文件 ->NSDictionary
+(NSDictionary *)loadNSDictionaryForDocument:(NSString*)FileUrl {
NSString *f = [self fullpathOfFilename:FileUrl];
NSDictionary *list = [[NSDictionary alloc] initWithContentsOfFile:f];
return [list autorelease];
}
//加载文件工程位置的文件 ->NSDictionary
+(NSDictionary *)loadNSDictionaryForProduct:(NSString*)FileUrl {
NSString *f = [self ProductPath:FileUrl];
NSDictionary *list =[NSDictionary dictionaryWithContentsOfFile:f];
return list;
}
//加载文件沙盒的文件 -> NSArray
+(NSArray *)loadArrayList:(NSString*) FileUrl {
NSString *f = [self fullpathOfFilename:FileUrl];
NSArray *list = [NSArray arrayWithContentsOfFile:f];
return list;
}
//加载文件工程位置的文件 -> NSArray
+(NSArray *)loadArrayListProduct:(NSString*) FileUrl {
NSString *f = [self ProductPath:FileUrl];
NSArray *list = [NSArray arrayWithContentsOfFile:f];
return list;
} //====================================================================================//
//获得document文件路径
+(NSString *)fullpathOfFilename:(NSString *)filename {
NSString *documentsPath = [self documentsPath];
// NSLog(@"documentsPath=%@",documentsPath);
return [documentsPath stringByAppendingPathComponent:filename];//这里就是 documentsPath + filePath
}
//拷贝文件到沙盒
+(int) CopyFileToDocument:(NSString*)FileName{
NSString *appFileName =[self fullpathOfFilename:FileName];
NSFileManager *fm = [NSFileManagerdefaultManager];
//判断沙盒下是否存在
BOOL isExist = [fm fileExistsAtPath:appFileName];
if (!isExist) //不存在,把工程的文件复制document目录下
{
//获取工程中文件
NSString *backupDbPath = [[NSBundle mainBundle]
pathForResource:FileName
ofType:@""];
//这一步实现数据库的添加,
// 通过NSFileManager 对象的复制属性,把工程中数据库的路径复制到应用程序的路径上
BOOL cp = [fm copyItemAtPath:backupDbPath toPath:appFileName error:nil];
return cp;
} else {
return -; //已经存在
}
}
//====================================================================================// //判断文件是否存在
+(BOOL) FileIsExists:(NSString*)checkFile{
if([[NSFileManager defaultManager] fileExistsAtPath:checkFile])
{
return true;
}
return false;
} //读取工程文件
+(NSString *) ProductPath:(NSString*)filename{
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@""];
return path;
}

打开模拟器沙盒目录

下面看看模拟器的沙盒文件夹在mac电脑上的什么位置。

文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library。

  方法1、可以设置显示隐藏文件,然后在Finder下直接打开。设置查看隐藏文件的方法如下:打开终端,输入命名

显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

输完单击Enter键,退出终端,重新启动Finder就可以了
重启Finder:鼠标单击窗口左上角的苹果标志-->强制退出-->Finder-->

现在能看到资源库文件夹了。

打开资源库后找到/Application Support/iPhone Simulator/文件夹。这里面就是模拟器的各个程序的沙盒目录了。

  方法2、这种方法更方便,在Finder上点->前往->前往文件夹,输入/Users/username/Library/Application Support/iPhone Simulator/  前往。

username这里写你的用户名。

 
 
 
 
 
 
 
 

IOS应用沙盒文件操作的更多相关文章

  1. iOS关于沙盒文件拷贝manager.copyItem的一个坑

    记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...

  2. 【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    [iOS系列]-iOS查看沙盒文件图文教程(真机+模拟器) 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString *path = [NSSearchPathFor ...

  3. 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)

    原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...

  4. iOS 沙盒文件操作

    //获得document +(NSString *)documentsPath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDoc ...

  5. iOS 获取沙盒文件路径及 写入/删除 沙盒文件

    出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能在用户授权的情况下被第三方应用访问),这个规则把iOS系统的封闭性展现的淋漓尽致. 一.沙盒中 ...

  6. iOS_SN_沙盒文件操作及位置

    转载:http://blog.csdn.net/hello_hwc/article/details/44916909 沙盒的结构如下所示 一 访问Bundle 注意Bundle只读,不能写入 创建一个 ...

  7. iOS开发——数据持久化Swift篇&(二)沙盒文件

    沙盒文件 //******************** 5.2 文件操作 func use_FileOperations() { //1.获取程序的Home目录 let homeDirectory = ...

  8. 关于ios项目沙盒中的文件和Xcode项目创建的文件

    //1.1获取在Xcode项目打开的情况下创建的Plist文件 NSString *path = [[NSBundle mainBundle]pathForResource:@"Profes ...

  9. iOS 开发查看应用的沙盒文件

    在iOS开发中,常常需要将一些信息保存到本地,比如说用户的一些搜索历史等.那么,如何查看所保存的文件呢? 这里介绍两种途径来查看应用的沙盒文件. 方法一:通过Xcode来查看,步骤如下: (1): X ...

随机推荐

  1. 显示SQL Server分配的全部内存

    1.在sqlserver 中建立查询 2.执行 DBCC MEMORYSTATUS 在Windows Server 2000/2003任务管理器中,“内存使用”这个字段是显示工作区分配的内存.一个进程 ...

  2. 初探KMP算法

            数据结构上老师也没讲这个,平常ACM比赛时我也没怎么理解,只是背会了代码--前天在博客园上看见了一篇介绍KMP的,不经意间就勾起了我的回忆,写下来吧,记得更牢. 一.理论准备      ...

  3. [转载]SharePoint 2013搜索爬外网配置

    本文介绍SharePoint 2013 设置外网(Internet)爬网源: 下面是步聚: 1. 新建外部爬网源 a. 打开 “SharePoint 2013 Central Administrati ...

  4. Marvel – 将图像和源文件转换成互动,共享的原型

    Marvel 是一款非常简单的工具,将图像和设计源文件转换成互动,共享的原型,无需任何编码.原型可以通过点击几下鼠标就创建出来,能工作在任何设备上的浏览器,包括移动设备,台式机.Marvel 的一个特 ...

  5. Vue基础---->VueJS的使用(二)

    组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.今天我们就来学习一 ...

  6. Javascript面向对象之继承

    与类的创建篇一样,这里先贴出最终代码,再做详细分析: // 创建一个父类 function SuperType(){ this.company = 'alibaba'; } function SubT ...

  7. 帮助你在 Photoshop 中轻松实现长阴影效果的工具

    扁平化设计正被用于各个主流的移动操作系统以及许多流行的网站,这是一个不断上升的趋势. 这种趋势有其分支,其中之一是“长阴影 “的效果在元素上的使用. 采用角度为 45 度的投影,给对象添加了一份立体感 ...

  8. “康园圈--互联网+校园平台“项目之sprint1总结

    一.团队成员     梁植淋,官郅豪,纪焓,詹耀海 二.目前进度       在全体组员的努力下,目前完成了项目的<设计方案书>.<功能需求书>.框架搭建.项目部署文档. 并成 ...

  9. jQuery的事件one

    如果你只想你设计的对象只能让用户执行一次的话,可以使用jQuery的事件one()来实现. 演示一个,创建视图, 看看效果:

  10. 【jQuery基础学习】08 编写自定义jQuery插件

    目的:虽然jQuery各种各样的功能已经很完善了,但是我们还是要学会自己去编写插件.这样我们可以去封装一些项目中经常用到的专属的代码,以便后期维护和提高开发效率. jQuery插件的类型: 封装对象方 ...