iOS开发中对文件目录的访问及管理的基本方法小结
文件目录的访问
最简单的:(由于是沙盒关系,没有文件夹概念的)
UIImage*image=[UIImageimageNamed:@"11.png"];
这个已经是相对app里面打包好的路径,不需要额外添加路径。
还有一种就是需要指定文件路径的:
需要用到NSBundle.
[[NSBundlemainBundle]resourcePath],这个就是程序的打包后的路径。
如果需要指定路径,就要这样写:
你也可自己拼接:
NSString*path=[NSStringstringWithFormat:@"%@/%@/%@",[[NSBundlemainBundle]resourcePath],@"document",@"aaa.txt"];
或者直接:
NSString*path=[[NSBundlemainBundle]pathForResource:@"aaa"ofType:@"png"];
一般来说应用程序有3个目录
Documents,Library,tmp
现在apple不允许把大数据保存在documents文档,如果你想把视频什么的保存在documents文档里面,需要备份到icould比较麻烦。
一般窝的做法就是保存在Library的caches目录下面(不知道是否合理:))
tmp目录的话,保存一些临时文件,在退出程序的时候你可以把里面的缓存内容删除。
在应用程序中获得自己的documents目录:
NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);NSString*documentDirectory=[pathsobjectAtIndex:0];
在上面的基础上,获得一个完整的文件路径和名字:
NSString*file=[documentDirectorystringByAppendingPathComponent:@"file1.txt"];
这就可以用file来创建,读取,和写入文件。
文件目录管理
下面来看一些常用的文件目录管理方法
1、常见的NSFileManager文件方法
-(NSData*)contentsAtPath:path//从一个文件读取数据
-(BOOL)createFileAtPath:pathcontents:(NSData*)dataattributes:attr//向一个文件写入数据
-(BOOL)removeItemAtPath:patherror:err//删除一个文件
-(BOOL)moveItemAtPath:fromtoPath:toerror:err//重命名或者移动一个文件(to不能是已存在的)
-(BOOL)copyItemAtPath:fromtoPath:toerror:err//复制文件(to不能是已存在的)
-(BOOL)contentsEqualAtPath:pathandPath:path2//比较两个文件的内容
-(BOOL)fileExistAtPath:path//测试文件是否存在
-(BOOL)isReadableFileAtPath:path//测试文件是否存在,并且是否能执行读操作
-(BOOL)isWriteableFileAtPath:path//测试文件是否存在,并且是否能执行写操作
-(NSDictionary*)attributesOfItemAtPath:patherror:err//获取文件的属性
-(BOOL)setAttributesOfItemAtPath:attrerror:err//更改文件的属性