镔哥告诉你,在一个项目中,很多时候都要接触iOS文件系统,这样你就有很多机会和NSNFileManager类打交道。如同它的名字一样,这个类可以用来进行文件的复制,改名,移动,或是用来判断文件是否存在等操作。并且从iOS5之后,你就可以通过这个类来和保存在iCloud中的文件进行互动。
简单介绍
下面这个表格中的措施
措施名称 | 描述 |
-(NSData *)contentsAtPath:path | 从path所代表的文件中读取数据 |
-(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr | 将数据写入文件 |
-(BOOL)removeFileAtPath:path handler:handler | 将path所代表的文件删除 |
-(BOOL)movePath:from toPath:to handler:handler | 移动或者重命名文件,to所代表的文件不能是已经存在的文件 |
-(BOOL)copyPath:from toPath:to handler:handler | 复制文件,to所代表的文件不能是已经存在的文件 |
-(BOOL)contentsEqualAtPath:path1 andPath:path2 | 比较path1和path2所代表的文件 |
-(BOOL)fileExistsAtPath:path | 检查path所代表的文件是否存在 |
-(BOOL)isReadableFileAtPath:path | 检查path所代表的文件是否存在、是否可读 |
-(BOOL)isWritableFileAtPath:path | 检查path所代表的文件是否存在、是否可写 |
-(NSDictionary *)fileAttributesAtPath:path traverseLink:(BOOL)flag | 获取path所代表的文件属性 |
-(BOOL)changeFileAttributes:attr atPath:path | 改变文件属性 |
镔哥哥认为,我们都应该知道, iOS的沙盒机制,应用只能访问自己应用目录下的文件。iOS不像android,没有SD卡概念,不能直接访问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。Library包含Caches、Preferences目录
Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录
Library:存储程序的默认设置或其它状态信息;
Library/Caches:存放缓存文件,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下。
tmp:提供一个即时创建临时文件的地方,但不需要持久化,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候清除。
iOS怎么获取沙盒路径,怎么操作文件呢?下面给出答案。
获取应用沙盒根路径:
- -(void)dirHome{
- NSString *dirHome=NSHomeDirectory();
- NSLog(@"app_home: %@",dirHome);
- }
获取Documents目录路径:
- //获取Documents目录
- -(NSString *)dirDoc{
- //[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSLog(@"app_home_doc: %@",documentsDirectory);
- return documentsDirectory;