因为应用是在沙盒中sandbox,在文件的读写权限上受到限制,只能在下面几个目录下读写文件:
1、Documents:应用中用户数据可以存放在此,iTunes备份和恢复时会包含此目录;2、 Tmp:iTunes备份和恢复时不会包含此目录,此目录的文件有可能在应用退出时被删除;3、Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录在应用退出时不会被删除
在Documents目录下创建文件:
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentDirectory=[pathsobjectAtIndex:0];
NSString *dbPath=[documentDirectorystringByAppendingPathComponent:@"MyDataBase.db"];
FMDatabase *db=[FMDatabasedatabaseWithPath:dbPath];
在其他目录上创建文件:NSArray *paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
使用NSSearchPathForDirectoriesInDomains只能获取到Caches和Documents目录,无法获取tmp目录。在ios中,可以使用NSHomeDirectory( )来获取应用的根目录,也就是Documents的上级目录。可以使用NSString *fileName=[NSHomeDirectory()stringByAppendingPathComponent:@"tmp/myFile.txt"];
或者使用NStemporaryDirectory()
参考文献
http://blog.csdn.net/happytengfei/article/details/8011886