沙盒
1,每个app下都有一个独立的沙盒目录,就是该app的文件目录,跟其他的app沙盒是相互隔离的,他们之间不能进行数据间的访问.
2,app所有非代码文件都保存在沙盒中,比如plist,文本,文件夹,图片,图标,音视频等等.
获取沙盒不同文件夹的路径
沙盒基本目录结构
1 | /Doucuments |
沙盒路径读取
主路径
1 | //沙盒在模拟器或者真机中的主路径 |
Documents
保存app重要数据(如FMDB,下载的图片和音视频),该文件夹下文件会在程序更新时自动备份,连接itunes会进行备份.
1 | NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject]; |
Library
下有2个子文件夹(Preferences和Caches),保存不希望给用户看到的数据,可以自主创建文件,除了caches外,都会被itunes备份.
1 | NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]; |
Library下Preferences路径
保存程序的偏好设置,如NSUserDefaults,plist(允许权限说明)等,会被itunes备份.
1 | NSString *prePath = [NSString stringWithFormat:@"%@%@",libPath,@"/Preferences"]; |
Library下Caches路径
保存程序运行的时候产生支持文件和缓存文件,iTunes不会备份该目录而且会被其他工具清除.
1 | NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; |
Tmp路径
程序运行时的临时数据,不会被iTunes备份,手机重启时,会被清空.
1 | NSString *tmpPath = NSTemporaryDirectory(); |
获取路径函数:C函数
1 | 1,返回值是一个字符串数组: NSArray<NSString *> |
获取某个文件夹路径下一级目录和所有目录
主路径下的所有目录
1 | NSArray * subArr = [[NSFileManager defaultManager] subpathsAtPath:home]; |
Docments路径下的一级文件
1 | NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) lastObject]; |