美文网首页
iOS 沙盒

iOS 沙盒

作者: 方小花c | 来源:发表于2018-02-01 22:20 被阅读0次

最近在做数据库缓存和清除缓存功能,了解了一下app下各个文件的用途。

每个APP的沙盒下的目录结构,如图(苹果官方文档):

开发人员主要关注的是Documents、Library和Temp三个文件(以下是官方英文翻译过的):

一、沙盒结构

1、Documents : 使用此目录来存储用户生成的内容。可以通过文件共享向用户提供该目录的内容;因此,这个 目录应该只包含您希望向用户公开的文件。这个目录的内容由iTunes和iCloud备份。

2、Library : 这是任何不是用户数据文件的文件的顶级目录。您通常将文件放在几个标准子目录中的一个中。iOS应用程序通常使用应用程序支持和缓存子目录;但是,您可以创建自定义子目录。使用库子目录来获取您不想让用户看到的任何文件。您的应用程序不应该使用这些目录为用户数据文件。库目录的内容(除了缓存子目录之外)由iTunes和iCloud备份。

    该目录下有两个子目录:

        1)、Preferences:此目录包含特定于应用程序的首选项文件。您不应该自己在这个目录中创建文          件。相反,使用NSUserDefaults类或CFPreferences API来获取和设置应用程序的首选项值。在iOS中,这个目录的内容被iTunes和iCloud备份。

        2)、Caches :使用此目录来编写应用程序可以轻松重新创建的任何特定于应用程序的支持文件。您的应用程序通常负责管理该目录的内容,并根据需要添加和删除文件。在iOS 5.0和以后的版本中,系统在磁盘空间非常低的情况下可能会删除缓存目录。这在应用程序运行时不会发生。但是,请注意,从备份中恢复并不一定是缓存目录可以被删除的惟一条件。

        如此之外,可以创建子文件夹。可以用来放置您希望被备份但不希望被用户看到的数据。该路径下的文件夹,除Caches以外,都会被iTunes备份。

3、Temp:使用此目录来编写不需要在应用程序启动之间持久保存的临时文件。应用程序在不再需要时,应该从该目录删除文件;但是,当你的应用程序没有运行时,系统可以清除这个目录。该目录的内容不支持iTunes或iCloud。

二、获取各个文件目录的路径

获取目录路径的方法:

// 获取沙盒主目录路径NSString*homeDir =NSHomeDirectory();

// 获取Documents目录路径NSString*docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) firstObject];

// 获取Library的目录路径NSString*libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) lastObject];

// 获取Caches目录路径NSString*cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];

// 获取tmp目录路径NSString*tmpDir =NSTemporaryDirectory();

获取应用程序程序包中资源文件路径的方法:

NSLog(@"%@",[[NSBundlemainBundle] bundlePath]);NSString*imagePath = [[NSBundlemainBundle] pathForResource:@"apple"ofType:@"png"];UIImage*appleImage = [[UIImagealloc] initWithContentsOfFile:imagePath];

NSSearchPathForDirectoriesInDomains方法用于查找目录,返回指定范围内的指定名称的目录的路径集合。有三个参数:

**directory** NSSearchPathDirectory类型的enum值,表明我们要搜索的目录名称,比如这里用NSDocumentDirectory表明我们要搜索的是Documents目录。如果我们将其换成NSCachesDirectory就表示我们搜索的是Library/Caches目录。

** * domainMask* ** NSSearchPathDomainMask类型的enum值,指定搜索范围,这里的NSUserDomainMask表示搜索的范围限制于当前应用的沙盒目录。还可以写成NSLocalDomainMask(表示/Library)、NSNetworkDomainMask(表示/Network)等。

** * expandTilde* ** BOOL值,表示是否展开波浪线。我们知道在iOS中的全写形式是/User/userName,该值为YES即表示写成全写形式,为NO就表示直接写成“~”。

该值为NO:Caches目录路径~/Library/Caches

该值为YES:Caches目录路径

/var/mobile/Containers/Data/Application/E7B438D4-0AB3-49D0-9C2C-B84AF67C752B/Library/Caches

转载链接:https://www.jianshu.com/p/dd3f120eb249

相关文章

  • iOS 系统相关复习

    沙盒 iOS沙盒详细介绍iOS沙盒篇 沙盒机制介绍 iOS中的沙盒机制是一种安全体系。为了保证系统安全,iOS每个...

  • iOS 数据持久化知识汇总(1)—————存储路径

    一、沙盒和沙盒存储路径 1、沙盒是什么 iOS 每个iOS应用都有自己的应用沙盒,应用沙盒就是文件系统目录 。所...

  • 05-iOS数据存储

    一、iOS沙盒机制 iOS的每个应用都有属于自己的存储空间,即沙盒应用只能访问自己的沙盒,不可访问其他区域。 沙盒...

  • 使用沙盒的正确姿势

    在学习iOS存储方法之前,先了解一下iOS存储机制——沙盒应用沙盒机制:每个iOS应用都有自己的应用沙盒(文件系统...

  • Objective-C沙盒结构

    导读: 一、什么是沙盒机制二、沙盒的特点三、沙盒的结构组成四、获取沙盒目录路径 一、什么是沙盒机制 iOS中的沙盒...

  • iOS 沙盒

    沙盒机制:在iOS中每个APP都拥有自己的沙盒,APP只能访问对应沙盒中存储的数据, iOS是不允许跨越沙盒去访问...

  • OC - 沙盒

    导读: 一、什么是沙盒机制 二、沙盒的特点 三、沙盒的结构组成 四、获取沙盒目录路径 一、什么是沙盒机制 iOS中...

  • 沙盒

    一、iOS沙盒机制介绍(1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 ...

  • iOS本地数据存取,看这里就够了

    iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文...

  • iOS读写json文件

    一.获取沙盒路径 每个iOS应用都有自己专属的应用沙盒,应用沙盒就是文件系统中的目录。但是iOS系统会将每个应用的...

网友评论

      本文标题:iOS 沙盒

      本文链接:https://www.haomeiwen.com/subject/anewsxtx.html