IOS应用沙盒文件操作
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应用沙盒文件操作的更多相关文章
- iOS关于沙盒文件拷贝manager.copyItem的一个坑
记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...
- 【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)
[iOS系列]-iOS查看沙盒文件图文教程(真机+模拟器) 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString *path = [NSSearchPathFor ...
- 【转】【iOS系列】-iOS查看沙盒文件图文教程(真机+模拟器)
原文网址:http://www.cnblogs.com/fengtengfei/p/5090276.html 1:模拟器 1.1 方法1: 程序中打印一下的地址,能直接前往沙盒路径. NSString ...
- iOS 沙盒文件操作
//获得document +(NSString *)documentsPath { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDoc ...
- iOS 获取沙盒文件路径及 写入/删除 沙盒文件
出于安全考虑,iOS系统的沙盒机制规定每个应用都只能访问当前沙盒目录下面的文件(也有例外,比如系统通讯录能在用户授权的情况下被第三方应用访问),这个规则把iOS系统的封闭性展现的淋漓尽致. 一.沙盒中 ...
- iOS_SN_沙盒文件操作及位置
转载:http://blog.csdn.net/hello_hwc/article/details/44916909 沙盒的结构如下所示 一 访问Bundle 注意Bundle只读,不能写入 创建一个 ...
- iOS开发——数据持久化Swift篇&(二)沙盒文件
沙盒文件 //******************** 5.2 文件操作 func use_FileOperations() { //1.获取程序的Home目录 let homeDirectory = ...
- 关于ios项目沙盒中的文件和Xcode项目创建的文件
//1.1获取在Xcode项目打开的情况下创建的Plist文件 NSString *path = [[NSBundle mainBundle]pathForResource:@"Profes ...
- iOS 开发查看应用的沙盒文件
在iOS开发中,常常需要将一些信息保存到本地,比如说用户的一些搜索历史等.那么,如何查看所保存的文件呢? 这里介绍两种途径来查看应用的沙盒文件. 方法一:通过Xcode来查看,步骤如下: (1): X ...
随机推荐
- forever守护nodejs进程
客户端启动Node.js应用: node app.js # 方法一 npm start # 方法二 Express框架 这样可以正常启动应用,但是如果断开客户端连接,应用也就随之停止了.也就是说这样的 ...
- CentOS 7.2 MySQL 5.7 主从配置
MySQL的安装:CentOS 7.2 yum方式安装MySQL 5.7 两台服务器分别如下: Master:192.168.1.100 Slave:192.168.1.101 Master配置: 编 ...
- 使用Eclipse调试PHP程序
我安装的是PHP Version 5.3.26,按照网上提示在Eclipse中使用XDebug进行调试,不过配置了却使用不了,下面把解决方法简要说一下. XDebug老是加载不了 From PHP 5 ...
- JS 数组去重的几个方法
Array.prototype.unique1 = function () { var n = []; //一个新的临时数组 for (var i = 0; i < this.length; i ...
- AC自动机 - 多模式串的匹配运用 --- HDU 3065
病毒侵袭持续中 Problem's Link:http://acm.hdu.edu.cn/showproblem.php?pid=3065 Mean: 略 analyse: AC自动机的运用. 这一题 ...
- SQL compute by 的使用
SQL compute by 的使用 摘自:http://www.cnblogs.com/Gavinzhao/archive/2010/07/12/1776107.html GROUP BY子句有个缺 ...
- LODOP打印插件
HTML代码(请先下载对应LODOP插件安装) - 打印onclike事件CreatePrintPage()打印函数,LODOP.PREVIEW()打印预览. <div class=&q ...
- 关于WPF绘图中的path.data在后台重新赋值的语法
//XAML语法 <Path Name="path_M" Fill="LawnGreen" Data="M 0 0 L 100 0 L 100 ...
- ActiveReports 9 新功能:创新的报表分层设计理念
在最新发布的ActiveReports 9报表控件中添加了多项新功能,以帮助你在更短的时间里创建外观绚丽.功能强大的报表系统,本文将重点介绍创新的报表分层设计理念,对报表内容进行分组管理与设计,易于实 ...
- 泛函编程(10)-异常处理-Either
上节我们介绍了新的数据类型Option:一个专门对付异常情况出现时可以有一致反应所使用的数据类型.Option可以使编程人员不必理会出现异常后应该如何处理结果,他只是获得了一个None值,但这个Non ...