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

时间: 2024-11-03 05:32:41

iOS沙盒处理的相关文章

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

IOS学习(OC语言)知识点整理 一.IOS沙盒机制介绍 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访问(extension) 2)extension是ios8新开放的一种对几个固定系统区域的拓展机制,它可以在一定程度上弥补ios的沙盒机制对应用间的通信限制 3)应用沙盒一般包括以下几个文件目录: 1.应用程序包:包含所有资源文件和可执行文件 2.Documents:保存应用

iOS沙盒

iOS沙盒中一共有四个文件夹 ------安装目录(r) -------Ducuments:长期存放用户文件或文件夹(rw) -------A.pp:mainBundle:存放可执行文件和资源文件(r) -------tmp:存放临时文件(r,w) -------Library -------caches:存放缓存文件(rw) 访问这些文件的方法: //获取根目录路径 NSString *home=NSHomeDirectory(); NSLog(@"%@",home);//打印出该路

iOS 沙盒目录结构介绍

iOS系统中,每个应用都有自己的沙盒,且应用只能访问其对应的沙盒目录下面的文件.当然,在用户授权的情况下,应用也可以访问其他目录下面的文件.比如,用户授权情况下,应用可以访问相册.通讯录.在开发中,经常会涉及到 iOS 沙盒目录,比如读写文件,归档解档等. 一:沙盒的目录结构 app的沙盒目录结构如下图: 可知,沙盒目录下有三个文件夹:Documents.Library.Temp.其中,Library下面有两个文件夹,分别是 Preferences 和 Caches. 二:每个目录下存放的文件

【理解】 iOS沙盒(sandbox)机制(一)

1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1.1.每个应用程序都有自己的存储空间 1.2.应用程序不能翻过自己的围墙去访问别的存储空间的内容 1.3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行. 通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是:san

iOS 沙盒

1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1.1.每个应用程序都有自己的存储空间 1.2.应用程序不能翻过自己的围墙去访问别的存储空间的内容 1.3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行.     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是

ios 沙盒机制

1.IOS沙盒机制 在ios系统中,系统都为每一个app创建一个资源目录,这个目录称之为沙盒 .里面存放着图片,属性文件plist,bundle,nib文件等. 其特点如下: 1.每个应用都有属于自己的存储空间 -- 沙盒. 2.每个应用都只能访问自己的沙盒,不能访问别的沙盒 3.每个应用的文件操作必须在沙盒内,比如数据库存储,文件存储等 2.沙盒目录结构 Documents 应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 --- Caches 存储应用程序再次启动所需的信

iOS学习之iOS沙盒(sandbox)机制和文件操作复习

1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. 1.1.每个应用程序都有自己的存储空间 1.2.应用程序不能翻过自己的围墙去访问别的存储空间的内容 1.3.应用程序请求的数据都要通过权限检测,假如不符合条件的话,不会被放行.     通过这张图只能从表层上理解sandbox是一种安全体系,应用程序的所有操作都要通过这个体系来执行,其中核心内容是

IOS沙盒Files目录说明和常用操作

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 读取Documents目录代码 NSArray *pathsDocuments=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *pathDoc

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

转:http://my.oschina.net/joanfen/blog/151145 一.iOS沙盒机制 iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox). 每个应用都有属于自己的存储空间,即沙盒 应用只能访问自己的沙盒,不可访问其他区域 如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以去访问,但是如果要装在真机上

iOS沙盒(sandbox)

iOS沙盒 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,默认下iOS应用只能访问自己的沙盒 extenaion是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制 应用程序包: Documents  持久化数据 tmp  临时目录 Library cache  缓存 Preferences  配置信息\SQLite 沙盒路径获取的方法 1.沙盒的路径 2.Documents 路径 3.tmp 路径 4.Library 路 /