沙盒路径 的 简介

沙盒文件  

每个 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);   
NSString *path = [paths objectAtIndex:0];   

//Cache
目录 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);   
NSString *path = [paths objectAtIndex:0];   

//Libaray
目录 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);   
NSString *path = [paths objectAtIndex:0];   

//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; 
    }  
 p S :如何保证新建文件夹的父亲文件夹已经存在, 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];    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值