iOS 沙盒的存取

沙盒文件目录获取代码:

//Home目录

NSString *homeDirectory = NSHomeDirectory(); 

//Document


//Document目录

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   
NSString *path = [paths objectAtIndex:0];   

//Cache

NSString *path = [paths objectAtIndex:0];   

//Cache目录

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

//Libaray

NSString *path = [paths objectAtIndex:0];   

//Libaray目录

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

//tmp

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; 
    }  
 pS:如何保证新建文件夹的父亲文件夹已经存在,iosFoundation框架中的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方法。写入文件的同时,系统会自动创建文件。  

一般数据类型,比如数组、字典、NSDataNSString都可以直接调用writeToFile方法写入文件。  

  
代码: [arrayA writeToFile:filePath atomically:YES];    

  
也可以手动创建文件: 

[fileManager createFileAtPath:destinationPath contents:[string dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]  

读取文件:  
  
如果用户知道文件内容的数据类型比较规整,则可以直接读取文件内容到标准数据结构中。  

 NSArray *arrayA = [[NSArray alloc]initWithContentsOfFile:filePath]; 






//创建 文件 路径  

#pragma mark - 缓存

    NSString *pathString = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];

//    NSString *pathString = path.lastObject;

    

    NSString *pathLast = [NSString stringWithFormat:@"/Caches/FindGift/%lu.plist", (unsigned long)[url hash]];

    //创建字符串文件存储路径

    NSString *PathName = [pathString stringByAppendingString:pathLast];

    NSLog(@"缓存 === %@", PathName);

//写入网络 请求下来缓存的图片

  [responseObject writeToFile:PathName atomically:YES];






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值