注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云水禅心

淡若秋菊何妨瘦, 清到梅花不畏寒.

 
 
 

日志

 
 

iPhone app 获取目录、读写临时文件的相关操作  

2011-06-07 11:50:10|  分类: google |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

相关内容来源于:http://www.cocoachina.com/bbs/read.php?tid-87-page-1.html


对于一个运行在iPhone得app,它只能访问自己根目录下得一些文件(所谓sandbox).
一个app发布到iPhone上后,它得目录结构如下:
iPhone app 获取目录的相关操作 - 云水禅心 - 云水禅心

 

1、其中得 app root 可以用 NSHomeDirectory() 访问到;

2、Documents 目录就是我们可以用来写入并保存文件得地方,一般可通过:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];    得到。


3、tmp 目录我们可以在里面写入一些程序运行时需要用得数据,里面写入得数据在程序退出后会没有。可以通过
NSString *NSTemporaryDirectory(void); 方法得到;


4、文件一些主要操作可以通过NSFileManage 来操作,可以通过 [NSFileManger defaultManger] 得到它得实例。
相关得一些操作:
创建一个目录:比如要在Documents下面创建一个test目录,
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@”%@”,documentsDirectory);

NSFileManager *fileManage = [NSFileManager defaultManager];

NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@“test”];

BOOL ok = [fileManage createDirectoryAtPath:myDirectory attributes:nil];

取得一个目录下得所有文件名:(如上面的myDirectory)可用

NSArray *file = [fileManager subpathsOfDirectoryAtPath: myDirectory error:nil]; 或
NSArray *files = [fileManager subpathsAtPath: myDirectory ];


读取某个文件:
NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路径的文件名
或直接用NSData 的类方法:
NSData *data = [NSData dataWithContentOfPath:myFilePath];
保存某个文件:
可以用 NSFileManager的
- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
或 NSData 的
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
- (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr;


 

用于读写临时数据的方法

bool writeApplicationData(NSData *data, NSString *fileName) {   
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);         
    NSString *documentsDirectory = [paths objectAtIndex:0];         
    if (!documentsDirectory) {   
       NSLog(@"Documents directory not found!");            
       return NO; 
    }     
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];     
    return ([data writeToFile:appFile atomically:YES]);    
}   
  NSData *applicationDataFromFile(NSString *fileName)  {       
      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);          
      NSString *documentsDirectory = [paths objectAtIndex:0];    
      NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];    
      NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];     
     return myData;      
}
  评论这张
 
阅读(1883)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018