搞 iOS 开发的都知道在程序下面的沙盒路径,但是真正他们具体的作用可能就不是很清楚了。今天笔者就总结下他们的区别和相应的作用,也是为了给自己巩固下知识点。
附上官网文件系统设计规则说明
我们先来看一张图,来理解下
这张图就说明了沙盒路径下的目录结构,
获取 MyApp的沙盒路径
NSString *homePath = NSHomeDirectory(); OC
let homePath: String = NSHomeDirectory() Swift
在这个路径下有Documents、Library、temp以及一个.app包!通过down container 看到还有一个SystemData文件夹
接下来我们分别介绍这几个文件夹的路径获取方式和作用
一、Document:
Document:用于存储用户数据,该目录下的所有文件会进行iCloud或iTunes备份,所以,苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,如:
1.APP的数据库表.
2.必要的一些图标本地缓存.
3.重要的plist文件,如当前登录人的信息.
4.购买过的音乐,书籍等
获取方式
OC:
NSString *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
Swift:
let documentPaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,FileManager.SearchPathDomainMask.userDomainMask, true)[0]
另外documentationDirectory和documentDirectory是不同的,documentDirectory 是指程序中对应的Documents路径,而documentationDirectory对应于程序中的Library/Documentation路径,这个路径是没有读写权限的,所以看不到文件生成。
二、Library:
该路径下的文件夹,除Caches以外,都会被iTunes备份。这个目录下有两个子目录:
Preferences:
包含应用程序的偏好设置文件。NSUserDefaults就是默认存放在此文件夹下面。
Caches:
iTunes不会备份此目录,此目录下文件不会在应用退出删除。一般存放体积比较大,不是特别重要的资源,比如缓存数据。缓存数据在设备低存储空间时可能会被删除。
获取方式:
OC:
NSString *library = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];
NSString *cachePaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
Swift:
let library = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory,FileManager.SearchPathDomainMask.userDomainMask, true)[0]
let cachePaths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0]
三、tmp:
tmp:目录用于存放临时文件,APP重新启动时会清除这个路径下的文件。该路径下的文件不会被iTunes备份。一般用来保存临时文件,比如:相机拍摄完成时的照片视频都会被暂时保存到这个路径。
获取方式:
OC:
NSString *tmp = NSTemporaryDirectory();
Swift:
let tmp = NSTemporaryDirectory()
好了,基于 Swift 和 Object-C两种语言获取沙盒路径就先写到这里了,既然提到路径,那么在接下来的一篇就提提存储吧。