iOS沙盒处理
沙盒文件
每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用的文件系统隔离,ios系统不允许访问其他应用的应用沙盒。在ios8中已经开放访问。
应用沙盒一般包括以下几个文件目录:应用程序包、Documents、Libaray(下面有Caches和Preferences目录)、tmp。
应用程序包:包含所有的资源文件和可执行文件。
Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录。苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也有可能会清除该目录下的文件,iTunes不会同步该目录。iphone重启时,该目录下的文件会丢失。
Library:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录。
Libaray/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除。一般存放体积比较大,不是特别重要的资源。
Libaray/Preferences:保存应用的所有偏好设置,ios的Settings(设置)应用会在该目录中查找应用的设置信息,iTunes会自动备份该目录。
沙盒文件目录获取代码:
//Home目录NSString *homeDirectory = NSHomeDirectory();
//Document目录NSArray *paths =[ NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
//Cache目录NSArray *paths = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//Libaray目录NSArray *paths = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
//tmp目录
NSString *tmpDir = NSTemporaryDirectory();
文件夹操作
创建文件夹:
沙盒文件夹操作使用系统Foundation框架下的NSFileManager文件操作类实现。在沙盒中新建文件夹,需指定新建文件夹的绝对路径,然后手动创建。并且要保证新建文件夹的上级路径已经存在,否则需要先创建上级文件夹路径。文件夹的创建使用createDirectoryAtPath方法。
新建文件夹代码:
if ([[NSFileManager defaultManager] fileExistsAtPath:createPath])//判断createPath路径文件夹是否已存在,此处createPath为需要新建的文件夹的绝对路径
{
return NO;
}
else
{
[[NSFileManager defaultManager] createDirectoryAtPath:createPath withIntermediateDirectories:YES attributes:nil error:nil];//创建文件夹
return YES;
}
pS:如何保证新建文件夹的父亲文件夹已经存在,ios的Foundation框架中的NSPathUtilities类中提供了一些操作路径string的方法。
stringByDeletingLastPathComponent :去掉路径中的最后一级成员
比如pp/ppp/pppp 操作过后则为:pp/ppp
pathComponents :拆分路径
比如pp/ppp/pppp 执行后得到一个NSArray数组,里面有三个元素为pp ppp pppp。
lastPathComponent :获取路径中的最后一级文件名
相关方法还有很多,可参考NSPathUtilities类。
删除文件夹:
删除文件夹,需先判定该文件夹是否存在(使用fileExistsAtPath方法),如果存在,执行删除操作(使用removeItemAtPath)。
删除文件夹代码:
if([[NSFileManager defaultManager] fileExistsAtPath:pathFull])//如果存在临时文件的配置文件
{
[[NSFileManager defaultManager] removeItemAtPath:pathFull error:&error];
}
移动文件夹:
文件夹移动需要两个参数,文件夹原绝对路径与目标绝对路径。使用moveItemAtPath 方法实现
移动文件夹代码:
if([fileManager moveItemAtPath:prePath toPath:cenPath error:&error]!=YES)// prePath 为原路径、 cenPath 为目标路径
{
NSLog(@"移动文件失败");
}
else
{
NSLog(@"移动文件成功");
}
PS:文件夹移动需要注意的是,要确保目标路径中除了目标文件夹之外的路径确实存在。否则移动到一个还没有创建的文件夹下,是会失败的,这和创建文件夹是一样的。
重命名文件夹:
重命名文件夹也需要两个参数,原绝对路径与目标绝对路径,用了一个偷换概念的方式来实现,其实用的是移动文件夹的方法。不赘述。
获取目录下的所有文件名称(包括文件夹与文件):
NSArray *fileNameList=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:imagesFolder error:nil];// fileNameList中即为该imagesFolder文件夹下的所有文件的名称数组
文件操作:
写入文件:
写入文件需要首先判定该文件的父亲文件夹是否存在,存在则可以进行写入,否则需首先创建父亲
路径。使用writeToFile方法。写入文件的同时,系统会自动创建文件。
一般数据类型,比如数组、字典、NSData、NSString都可以直接调用writeToFile方法写入文件。
代码: [arrayA writeToFile:filePath atomically:YES];
也可以手动创建文件:
[fileManager createFileAtPath:destinationPath contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]
读取文件:
如果用户知道文件内容的数据类型比较规整,则可以直接读取文件内容到标准数据结构中。
NSArray *arrayA = [[NSArray alloc]initWithContentsOfFile:filePath];
PS:或许有些时候,需要用到混合数据的写入与读取,可以使用NSMutableData实现。参考网址
http://blog.csdn.net/totogo2010/article/details/7671144
iOS沙盒处理的更多相关文章
- iOS - 沙盒与目录
NSFileManager NSBundle Class Cluster 采用Tagged Pointer的字符串 NSPathStore iOS证书ipa包重签名探究 url 结构 1. iOS 沙 ...
- iOS沙盒(sandbox)
iOS沙盒 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,默认下iOS应用只能访问自己的沙盒 extenaion是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补 ...
- IOS 学习之 iOS沙盒(sandbox) 介绍 沙盒机制 文件操作(一)
1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...
- iOS 阶段学习第25天笔记(iOS沙盒机制介绍)
iOS学习(OC语言)知识点整理 一.iOS沙盒机制介绍 1)概念: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒 ...
- iOS沙盒目录结构解析
iOS沙盒目录结构解析 原文地址:http://blog.csdn.net/wzzvictory/article/details/18269713 出于安全考虑,iOS系统的沙盒机制规定每个应 ...
- iOS沙盒机制介绍,Block 的介绍
一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...
- IOS沙盒Files目录说明和常用操作
Ios沙盒目录清单 1 Documents 用于存储用户生成的文件.其他数据及其他程序不能重新创建的文件,默认文件通过iCloud自动备份.如果不需要iCloud备份,则设置标记 NSURLIsExc ...
- ios沙盒路径
http://www.cnblogs.com/ios-wmm/p/3299695.html iOS沙盒路径的查看和使用 NSString *path = NSHomeDirectory();//主目录 ...
- iOS 沙盒(sandbox)机制和文件操作
本文参看了 http://www.uml.org.cn/mobiledev/201209211.asp#1 这篇文章中的介绍,尊重原著. 1.IOS沙盒机制 IOS应用程序只能在本应用程序中创建的文件 ...
- IOS学习之IOS沙盒(sandbox)机制和文件操作
IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...
随机推荐
- Python if 和 for 的多种写法
a, b, c = 1, 2, 3 [对比Cpp里:c = a >b? a:b]这个写法,Python只能常规的空行,缩进吗? 人生苦短,我用python,下面介绍几种if的方便的方法. 1.常 ...
- 读《编写可维护的JavaScript》第八章总结
第八章 避免“空比较” 我们在对传进来的参数做处理之前,肯定需要验证一下是否是我们想要的,也就是说大多数情况下,我们需要对比一下它的类型. 作者首先给了一个看起来都感觉不对的代码: var Contr ...
- VirtualBox piix4_smbus Error
VirtualBox piix4_smbus Error VirtualBox 3.2.10 gives me the following error message when booting U ...
- Linux系统下配置JDK环境变量
刚申请了阿里云,平时很少接触Linux,特此记录一下Linux系统下安装JDK的步骤. 1.进入usr:cd /usr: 2.创建java文件夹:mkdir java: 3.将下载好的文件拷贝至jav ...
- MySql的常用命令
Ubuntu下的安装 打开"终端窗口",输入sudo apt-get update-->回车-->"输入root用户的密码"-->回车 输入s ...
- redis_1(windows下的配置使用)
redis安装包:https://github.com/zhangsai521314/redis 1.将本文件夹放到C盘的根目录下. 2.使用控件台的方式运行redis-server.exe 启动命令 ...
- linux下添加环境变量
我安装完 RedHat Linux 5 之后,在终端使用一些命令,如: ifcinfig 查看本机的IP,发现不能使用此命令,提示说“command not found”,这该怎么办呢 想想肯定是环境 ...
- web应用动态文档技术
动态生成web文档分为服务器动态生成.客户端动态生成 服务器动态生成文档技术主要有: CGI - 公共网关接口,它是一个允许Web服务器与后端程序以及脚本进行通信的标准化接口.通常是web服务器收到一 ...
- JQuery_DOM 节点操作之复制、替换和 删除节点
一.复制节点 <script type="text/javascript" src="jquery-1.12.3.min.js"></scri ...
- Goppa code
上面的公式定义了长度为n的Goppa码[1].n=2^m, 其维度 k≥n- t·m. 最小距离d≥ 2t+1. 存在运行时间与 n·t 成正比的快速译码算法. 从形式上看,右边是分式,相当于线性分组 ...