iOS沙盒机制
2015-09-14 10:50
656 查看
/article/1385930.html
IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。
1.每个应用程序都在自己的沙盒内
2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容
3.应用程序向外请求或接收数据都需要经过权限认证
显示和隐藏文件夹的方法:
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
然后重新启动Finder,点击屏幕左上角苹果标志——强制退出——选择Finder然后点击重新启动,这个时候在重新打开Finder就可以看到被隐藏的文件了。
模拟器里的内容路径如下:
每个应用程序都有自己独有的目录:
/var/mobile/Applications/UUID
当应用程序安装时,UUID随机产生;
当删除应用程序重新安装的时候会重新生成目录
每个app目录下都有以下几个文件夹:
Documents/
Library/
Library/Caches
Library/Preferences
tmp/
.app
每个文件(文件夹)的功能如下:
.app/,这个就是可运行的应用文件,带有签名的文件包,包含应用程序代码和静态数据;
Documents/
:Use this directory to store critical user documents and app data files. Critical data is any data that cannot be recreated by your app, such as user-generated content.
The contents of this directory can be made available to the user through file sharing. The contents of this directory are backed up by iTunes.
:苹果建议将程序中创建的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;
Library/
:This directory is the top-level directory for files that are not user data files. You typically put files in one of several standard subdirectories but you can also create custom subdirectories for files you want backed up but not exposed to the user. You
should not use this directory for user data files.
The contents of this directory (with the exception of the Caches subdirectory) are backed up by iTunes.
For additional information about the Library directory, see “The Library Directory Stores App-Specific Files.”
:应用程序支持文件;
Library/Preferences/ :存储程序的默认设置或其它状态信息;
Library/Caches/:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除;当系统清理磁盘空间的时候会删除里面的内容。
tmp/
:Use this directory to write temporary files that do not need to persist between launches of your app. Your app should remove files from this directory when it determines they are no longer needed. (The system may also purge lingering files from this directory
when your app is not running.)
In iOS 2.1 and later, the contents of this directory are not backed up by iTunes.
:创建和存放临时文件的地方,应用程序成功启动,临时文件不需要持久保存。
注:
iTunes在与iPhone同步时,备份所有的Documents和Library文件。
iPhone在重启时,会丢弃所有的tmp文件。
下面是获取文件目录的代码以及读写文件的代码:示例Demo免费下载地址:http://download.csdn.net/detail/weasleyqi/7508141
获取根目录:
[objc] view
plaincopy
NSString *homePath = NSHomeDirectory();
NSLog(@"Home目录:%@",homePath);
获取Document目录:
[objc] view
plaincopy
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [docPath objectAtIndex:0];
获取Library目录:
[objc] view
plaincopy
NSArray *libsPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libPath = [libsPath objectAtIndex:0];
获取Cache目录:
[objc] view
plaincopy
NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [cacPath objectAtIndex:0];
获取Tmp目录:
[objc] view
plaincopy
NSString *tempPath = NSTemporaryDirectory();
NSLog(@"temp目录:%@",tempPath);
写入文件:
[objc] view
plaincopy
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [docPath objectAtIndex:0];
//写入文件
if (!documentsPath) {
NSLog(@"目录未找到");
}else {
NSString *filePaht = [documentsPath stringByAppendingPathComponent:@"test.txt"];
NSArray *array = [NSArray arrayWithObjects:@"Title",@"Contents", nil nil];
[array writeToFile:filePaht atomically:YES];
}
读取文件:
[objc] view
plaincopy
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [docPath objectAtIndex:0];
NSString *readPath = [documentsPath stringByAppendingPathComponent:@"test.txt"];
NSArray *fileContent = [[NSArray alloc] initWithContentsOfFile:readPath];
NSLog(@"文件内容:%@",fileContent);
示例Demo下载地址:http://download.csdn.net/detail/weasleyqi/7508141
IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。所有的非代码文件都保存在这个地方,比如图片、声音、属性列表和文本文件等。
1.每个应用程序都在自己的沙盒内
2.不能随意跨越自己的沙盒去访问别的应用程序沙盒的内容
3.应用程序向外请求或接收数据都需要经过权限认证
显示和隐藏文件夹的方法:
显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
然后重新启动Finder,点击屏幕左上角苹果标志——强制退出——选择Finder然后点击重新启动,这个时候在重新打开Finder就可以看到被隐藏的文件了。
模拟器里的内容路径如下:
每个应用程序都有自己独有的目录:
/var/mobile/Applications/UUID
当应用程序安装时,UUID随机产生;
当删除应用程序重新安装的时候会重新生成目录
每个app目录下都有以下几个文件夹:
Documents/
Library/
Library/Caches
Library/Preferences
tmp/
.app
每个文件(文件夹)的功能如下:
.app/,这个就是可运行的应用文件,带有签名的文件包,包含应用程序代码和静态数据;
Documents/
:Use this directory to store critical user documents and app data files. Critical data is any data that cannot be recreated by your app, such as user-generated content.
The contents of this directory can be made available to the user through file sharing. The contents of this directory are backed up by iTunes.
:苹果建议将程序中创建的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;
Library/
:This directory is the top-level directory for files that are not user data files. You typically put files in one of several standard subdirectories but you can also create custom subdirectories for files you want backed up but not exposed to the user. You
should not use this directory for user data files.
The contents of this directory (with the exception of the Caches subdirectory) are backed up by iTunes.
For additional information about the Library directory, see “The Library Directory Stores App-Specific Files.”
:应用程序支持文件;
Library/Preferences/ :存储程序的默认设置或其它状态信息;
Library/Caches/:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除;当系统清理磁盘空间的时候会删除里面的内容。
tmp/
:Use this directory to write temporary files that do not need to persist between launches of your app. Your app should remove files from this directory when it determines they are no longer needed. (The system may also purge lingering files from this directory
when your app is not running.)
In iOS 2.1 and later, the contents of this directory are not backed up by iTunes.
:创建和存放临时文件的地方,应用程序成功启动,临时文件不需要持久保存。
注:
iTunes在与iPhone同步时,备份所有的Documents和Library文件。
iPhone在重启时,会丢弃所有的tmp文件。
下面是获取文件目录的代码以及读写文件的代码:示例Demo免费下载地址:http://download.csdn.net/detail/weasleyqi/7508141
获取根目录:
[objc] view
plaincopy
NSString *homePath = NSHomeDirectory();
NSLog(@"Home目录:%@",homePath);
获取Document目录:
[objc] view
plaincopy
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [docPath objectAtIndex:0];
获取Library目录:
[objc] view
plaincopy
NSArray *libsPath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libPath = [libsPath objectAtIndex:0];
获取Cache目录:
[objc] view
plaincopy
NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [cacPath objectAtIndex:0];
获取Tmp目录:
[objc] view
plaincopy
NSString *tempPath = NSTemporaryDirectory();
NSLog(@"temp目录:%@",tempPath);
写入文件:
[objc] view
plaincopy
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [docPath objectAtIndex:0];
//写入文件
if (!documentsPath) {
NSLog(@"目录未找到");
}else {
NSString *filePaht = [documentsPath stringByAppendingPathComponent:@"test.txt"];
NSArray *array = [NSArray arrayWithObjects:@"Title",@"Contents", nil nil];
[array writeToFile:filePaht atomically:YES];
}
读取文件:
[objc] view
plaincopy
NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [docPath objectAtIndex:0];
NSString *readPath = [documentsPath stringByAppendingPathComponent:@"test.txt"];
NSArray *fileContent = [[NSArray alloc] initWithContentsOfFile:readPath];
NSLog(@"文件内容:%@",fileContent);
示例Demo下载地址:http://download.csdn.net/detail/weasleyqi/7508141
相关文章推荐
- 新手iOS
- IOS no identity found
- IOS中将照片压缩至指定大小
- ios 写项目的时候遇到的问题及解决方案(1)
- iOS开发多线程篇—线程安全
- iOS开发多线程篇—创建线程
- iOS/MAC开发博客分享
- iOS开发多线程篇—多线程简单介绍
- ios协议和委托
- iOS多线程编程之NSThread的使用
- iOS Label添加删除线
- iOS 简介eventKit框架(译) 日历提醒应用等
- iOS view的抗拉伸和抗压缩属性
- iOS学习笔记:instancetype关联返回类型
- iOS自动处理键盘事件的第三方库:IQKeyboardManager
- 判断设备是否越狱
- IOS 状态栏基本设置总结
- ffmpeg在iOS的使用 - iFrameExtractor源码解析
- iOS 统计打点那些事
- iOS学习笔记:plist文件的读写