0
点赞
收藏
分享

微信扫一扫

IOS 开发学习十三 Document目录的使用

每个ios应用程序运行在自己的沙盒里,使用模拟器时,每次程序启动的位置可能显示这样的:

/Users/xiechangjie/Library/Developer/CoreSimulator/Devices/4AF2B6F4-942E-4A8A-9385-4F7DE438F06A/data/Containers/Data/Application/EF178531-EA1D-4B6C-B1DD-BA6A98BAC41F/Documents


Application目录下的一串字符每次是变动的。

要获取Documents目录,使用:

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


获取Documents上一级: //通常它包含Documents tmp Library三个子目录,通常程序也只能写这三个子目录。


NSString *destPath = NSHomeDirectory();
NSLog(@"path: %@",destPath);

获取tmp目录

NSString *fileName=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/myFile.txt"];



NSTemporaryDirectory()



三个目录使用区别:

  • Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录(常量是NSDocumentDirectory)
  • tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除
  • Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除(常量是NSCachesDirectory)

在Documents下创建文件:

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.");
}


带编码的文件:

NSString *fileName=[[paths objectAtIndex:0] stringByAppendingPathComponent:@"myFile"];   
NSString *content=@"你好";
NSData *contentData=[content dataUsingEncoding:NSUnicodeStringEncoding];
if ([contentData writeToFile:fileName atomically:YES]) {
NSLog(@">>write ok.");
}


读取文件:

NSString *myFilePath = [[NSBundle mainBundle] pathForResource:@"readme" ofType:@"txt"];   
NSString *myFileContent=[NSString stringWithContentsOfFile:myFilePath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"bundel file path: %@ \nfile content:%@",myFilePath,myFileContent);




举报

相关推荐

0 条评论