ios6.1&ios7&ios9判断沙盒文件或者目录是否存在,以及判断是文件还是目录的一个隐藏问题
2015-11-13 20:56
761 查看
(BOOL)fileExistsAtPath:(NSString )path isDirectory:(BOOL )isDirectory
通常,iOS系统中判断文件或者目录是否存在,可以用上面这个API。
第二个参数 isDirectory是个传出参数, 用于返回,是文件还是目录。
一般两种情况会使用这个API
需求一、 判断文件或者目录是否存在
需求二. 判断path是文件还是目录
需求一、只要判断这个API的返回值,YES为存在,NO为不存在即可,isDirectory不需要判断
因为当传入参数 path不存在时, isDirectory返回的是 undefined, 如果不想要判断是否目录, 这个参数可传NULL。纵观网上的例子,判断文件或者目录是否存在时,同时也会判断这个参数的BOOL值。其实是错误的,因为还有第三个值undefined。
isDirectory
Upon return, contains YES if path is a directory or if the final path element is a symbolic link that points to a directory, otherwise contains NO. If path doesn’t exist, this value is undefined upon return. Pass NULL if you do not need this information.
尤其有意思的是,
当path看起来像是一个目录字符串时, iOS6和7和8,isDirectory返回的值不同。
iOS 6.1对这个的undefined,判断为NO,
而iOS7和8,返回YES
这个问题导致,如果使用isDirectory,在iOS6.1的系统中,是无法判断一个不存在 path, 它是一个文件或者文件夹。仅仅需要根据这个API的返回值判断即可
本文的分析,主要是解决iOS6与后续系统,对同一个API调用的细节处理。仅供参考。
需求二, 判断path是文件还是目录
根据需求一的分析
如果要判断path是文件还是目录,在iOS6.1中,需要确保path是存在的。那么实际应该是两步操作
第一次调用- (BOOL)fileExistsAtPath:(NSString )path isDirectory:(BOOL )isDirectory,根据返回值,判断是否存在
如果存在,进行第二次调用。
第二次调用- (BOOL)fileExistsAtPath:(NSString )path isDirectory:(BOOL )isDirectory,根据 isDirectory,判断是否是目录
http://blog.csdn.net/vieri_ch/article/category/1152277
通常,iOS系统中判断文件或者目录是否存在,可以用上面这个API。
第二个参数 isDirectory是个传出参数, 用于返回,是文件还是目录。
一般两种情况会使用这个API
需求一、 判断文件或者目录是否存在
需求二. 判断path是文件还是目录
需求一、只要判断这个API的返回值,YES为存在,NO为不存在即可,isDirectory不需要判断
因为当传入参数 path不存在时, isDirectory返回的是 undefined, 如果不想要判断是否目录, 这个参数可传NULL。纵观网上的例子,判断文件或者目录是否存在时,同时也会判断这个参数的BOOL值。其实是错误的,因为还有第三个值undefined。
isDirectory
Upon return, contains YES if path is a directory or if the final path element is a symbolic link that points to a directory, otherwise contains NO. If path doesn’t exist, this value is undefined upon return. Pass NULL if you do not need this information.
尤其有意思的是,
当path看起来像是一个目录字符串时, iOS6和7和8,isDirectory返回的值不同。
iOS 6.1对这个的undefined,判断为NO,
而iOS7和8,返回YES
这个问题导致,如果使用isDirectory,在iOS6.1的系统中,是无法判断一个不存在 path, 它是一个文件或者文件夹。仅仅需要根据这个API的返回值判断即可
本文的分析,主要是解决iOS6与后续系统,对同一个API调用的细节处理。仅供参考。
需求二, 判断path是文件还是目录
根据需求一的分析
如果要判断path是文件还是目录,在iOS6.1中,需要确保path是存在的。那么实际应该是两步操作
第一次调用- (BOOL)fileExistsAtPath:(NSString )path isDirectory:(BOOL )isDirectory,根据返回值,判断是否存在
如果存在,进行第二次调用。
第二次调用- (BOOL)fileExistsAtPath:(NSString )path isDirectory:(BOOL )isDirectory,根据 isDirectory,判断是否是目录
http://blog.csdn.net/vieri_ch/article/category/1152277
相关文章推荐
- ios 使用CFStringTransform将汉字转为拼音
- 关于iOS中的通知中心(NSNotificationCenter)
- 蓝懿ios 技术内容交流和学习心得 11.13
- iOS汉字转拼音(NSString+Characters)为NSString添加的类目
- iOS真机不能运行,模拟器可以
- 总结iOS 多线程学习过程三
- iOS计算缓存文件大小, 和清除缓存功能
- iOS 对plist增改操作
- iOS 基础知识的回顾和梳理
- IOS启动页设置适应ios8/9
- iOS事件处理系列1-事件的种类与处理流程
- iOS开发语言之OC 初级内存管理
- iOS中的自动释放池
- IOS 图片全屏预览
- 开源ImageFilter库For IOS源码发布
- 分析iOS Crash文件的3种方法
- iOS9获取所在城市的接口及解析(简单的NSURLSession使用和新的编码方法使用)
- iOS 内存管理
- iOS 3D touch OC代码
- iOS中影响引用计数的方法