黑马程序员——黑苹果的日记(11)—— oc加强

来源:互联网 发布:知乎上面的神回复 编辑:程序博客网 时间:2024/05/01 19:02


                                                               ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------




一   NSFileManager


1>
NSFileManager是用来管理文件系统的 它可以用来进行拷贝、剪切、创建等

NSFileManager使用了单例模式singleton .使用defaultManager方法可以获得那个单例对象
[NSFileManager defaultManager]


2>NSFileManager基本(常见的判断)

- (BOOL)fileExistsAtPath:(NSString *)path;
path这个文件或文件夹(目录)是否存在

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory;
path这个文件或文件夹是否存在, isDirectory代表是否为文件夹

- (BOOL)isReadableFileAtPath:(NSString *)path;
path这个文件或文件夹是否可读
- (BOOL)isWritableFileAtPath:(NSString *)path;
path这个文件或文件夹是否可写

- (BOOL)isDeletableFileAtPath:(NSString *)path;
path这个文件或文件夹是否可删除

3>NSFileManager文件访问

- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error;
获得path这个文件\文件夹的属性
- (NSArray *)subpathsAtPath:(NSString *)path;
查找给定路径下的所有子路径,返回一个数组, 深度查找,不限于当前层,也会查找package的 内容。

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;
获得path的当前子路径(path下的所有直接子内容,path必须是一个目录)


- (NSData *)contentsAtPath:(NSString *)path;
获得文件内容

4>NSFileManager文件操作

- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)
createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error;
只能创建文件夹(createIntermediates为YES代表自动创建中间的文件夹) 注意如果要创建的目录已经存在,则本次创建失败

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
拷贝,如果目标目录已经存在同名文件,则无法拷贝

- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
移动(剪切)

- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
删除

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
创建文件

5>NSFileManager文件下载思路

1.发送请求给服务器,要求下载某个文件
2.服务器发出响应,返回文件数据
3.手机客户端利用NSData来存放服务器返回的文件数据
4.利用NSFileManager将NSData里面的文件数据写到新的文件中。

二  iOS沙盒机制


1)沙盒的概念
应用沙盒就是文件系统目录,与其他应用的文件系统隔离,
ios系统不能访问其他应用沙盒。ios8中可开放访问(extension)

应用沙盒包括:应用程序包、Documents、Libaray、tmp。

应用程序包:所有的资源文件和可执行文件

Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录。

tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除


Library:存储程序的默认设置和其他状态信息,iTunes会自动备份该目录。

Libaray/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除。

Libaray/Preferences:保存应用的所有偏好设置,iTunes会自动备份该目录。


2)沙盒的位置
(1)Xcode5中模拟器路径为:/Users/用户名/Library/Application Support/iPhone Simulator

2)Xcode6中模拟器路径为:/Users/用户名/ Library/Developer/CoreSimulator


3)获取沙盒路径

NSSearchPathForDirectoriesInDomains 

返回一个绝对路径用来存放我们需要储存的文件


第一个参数:要获取的沙盒文件夹名称

第二个参数:
NSUserDomainMask = 1,//用户主目录中
NSLocalDomainMask = 2,//当前机器中 NSNetworkDomainMask = 4,//网络中可见的主机
NSSystemDomainMask = 8,//系统目录,不可修改(/System) NSAllDomainsMask = 0x0ffff,//全部

第三个参数:YES/NO 是否获取全路径
//Document目录NSArray *paths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *path= [paths objectAtIndex:0];//Cache目录NSArray *paths= NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);NSString *path= [paths objectAtIndex:0];//Libaray目录NSArray *paths= NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);NSString *path = [paths objectAtIndex:0];//tmp目录NSString *tmpDir = NSTemporaryDirectory();
常见用法:
在沙盒文件中创建文件夹
如:在Document目录下创建新的文件夹test




0 0
原创粉丝点击