iOS中对文件的操作
2012-03-15 09:57
351 查看
iOS中对文件的操作
来自 Fgamers2010年 12月 16日
838
次阅读 评论 (1)
因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件:
Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录
tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除
在Documents目录下创建文件
代码如下:1 2 3 4 5 6 7 8 9 10 11 | NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask , YES); NSLog(@"Get document path: %@",[paths objectAtIndex:0]); NSString *fileName=[[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile"]; NSString *content=@"a"; NSData *contentData=[content dataUsingEncoding:NSASCIIStringEncoding]; if ([contentData writeToFile:fileName atomically:YES]) { NSLog(@">>write ok."); } |
上述是创建ascii编码文本文件,如果要带汉字,比如:
1 2 3 4 5 6 | NSString *fileName=[[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile"]; NSString *content=@"更深夜静人已息"; NSData *contentData=[content dataUsingEncoding:NSUnicodeStringEncoding]; if ([contentData writeToFile:fileName atomically:YES]) { NSLog(@">>write ok."); } |
通过filezilla下载到创建的文件打开,中文没有问题:
在其他目录下创建文件
如果要指定其他文件目录,比如Caches目录,需要更换目录工厂常量,上面代码其他的可不变:
<pre lang="objc" line="1”>NSArray *paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory , NSUserDomainMask , YES);</pre><p>使用NSSearchPathForDirectoriesInDomains只能定位Caches目录和Documents目录。</p><p>tmp目录,不能按照上面的做法获得目录了,有个函数可以获得应用的根目录:</p><pre>NSHomeDirectory()</pre><p>也就是Documents的上级目录,当然也是tmp目录的上级目录。那么文件路径可以这样写:</p><div
class=" wp_syntax"="" style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-width: initial; border-color: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width:
0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; ">
1 | NSString *fileName=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/myFile.txt"]; |
NSTemporaryDirectory()
不过生成的路径将可能是:
…/tmp/-Tmp-/myFile.txt
使用资源文件
在编写应用项目的时候,常常会使用资源文件,比如:
安装到设备上后,是在app目录下的:
以下代码演示如何获取到文件并打印文件内容:
12 | NSString *myFilePath = [[NSBundle mainBundle] pathForResource:@"f" ofType:@"txt"]; NSString *myFileContent=[NSString stringWithContentsOfFile:myFilePath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"bundel file path: %@ \nfile content: %@",myFilePath,myFileContent); |
原文链接:http://marshal.easymorse.com/archives/3340
Tags:
file-IOiOSiPhoneNSHomeDirectorysandbox
相关文章推荐
- iOS学习笔记(十七)——文件操作(NSFileManager)
- iOS--基础--文件操作
- 【ios 汇总 - 操作文件常用方法】 (NSFileManager NSFileHandle NSData)
- IOS学习之IOS沙盒(sandbox)机制和文件操作
- ios中文件的相关操作:读,写,删除
- iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
- IOS学习之IOS沙盒(sandbox)机制和文件操作(二)
- ios 文件操作
- iOS中对文件的操作
- iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
- (0052)iOS开发之沙盒(sandbox)机制和文件操作(二)
- ios沙盒轻量文件操作(可以使用fopen)
- iOS学习之iOS沙盒(sandbox)机制和文件操作
- ios----全面的文件管理操作讲解
- iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
- 【精】iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)
- iOS学习之iOS沙盒(sandbox)机制和文件操作(一) .
- iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
- iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
- IOS 基本文件操作实例详解