zoukankan      html  css  js  c++  java
  • app数据存储路径获取方法和沙盒结构分析


    app安装到苹果手机上,会产生两个路径 ,分别为.app(应用程序安装目录)和应用程序的沙盒(应用程序保存数据的目录,如应用配置信息、缓存的文件等)。

    一、路径获取方法。

    通过NSBundle获取路径获取.app文件路径

     //  bundle 路径
        NSString *bundlePath = [NSBundle mainBundle].bundlePath;
        NSLog(@"%@",bundlePath);

    通过NSHomeDirectory获取沙盒路径

     //沙盒的路径
        NSString *shaPath = NSHomeDirectory();
        NSLog(@"%@",shaPath);
    •   通过输出栏信息前往/Users/xiejiwei/Library/Developer/CoreSimulator/Devices/4512C44C-3610-48BE-B29D-B05913DE11A7/data/Containers/Data/Application/5BB3D373-E89F-4D71-AD47-7A640DCAFF4E文件夹可以
    • 得到一个文件夹,内部包含Document,library(内部包含Caches和Preferences文件),tmp三个文件夹,获取文件夹路径的方法如下。
    • 我们可以通过下面三种方法获取Document路径。
     1 //1. 不能确定 加不加 斜杠
     2    NSString *shaPath = NSHomeDirectory(); 
     3    NSString *docPath = [shaPath stringByAppendingString:@"/Documents"];
     4    NSLog(@"%@",docPath);
     5 //2. 自动判断是否 有斜杠 如果没有自动添加
     6     NSString *docPath = [shaPath stringByAppendingPathComponent:@"Documents"];
     7     NSLog(@"%@",docPath);
     8 //3. 自动获取 路径
     9  NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
    10  NSLog(@"%@",docPath);
    //获取Library路径
    NSString *libPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
      NSLog(@"%@",libPath);
    //获取Tmp路径 
     NSString *tmpPath = NSTemporaryDirectory();
     NSLog(@"%@",tmpPath);
    //获取Cache路径
    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
     NSLog(@"%@",cachePath);
    二、app中保存数据的分类

    目前常用的5中存储方法

    •Preference(偏好设置)
    –本质还是通过“plist”来存储数据,但是使用简单(无序关注文件、文件夹路径和名称)。
    •NSKeyedArchiver归档(NSCoding)
    –把任何对象,直接保存为文件的方式。
    •SQLite3
    –当非常大量的数据存储时使用。
    •CoreData
    –就是对SQLite的封装。
    三、应用沙盒结构分析
    •每个iOS应用都有自己的应用沙盒(应用沙盒就是应用的文件夹),与其他文件系统隔离。应用必须呆在自己的沙盒里,其他应用不能访问该沙盒。
    •应用沙盒的文件系统目录如下:
    Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录。保存相对重要的数据。

    Tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录。保存不重要的并且大的数据。

    Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据

    Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录。该目录由系统管理, 无需我们来管理。通常用来存储一些基本的软件配置信息, 比如记住密码、自动登录等。

  • 相关阅读:
    kuangbin专题 专题二 搜索进阶 Escape HDU
    kuangbin专题 专题二 搜索进阶 哈密顿绕行世界问题 HDU
    kuangbin专题 专题一 简单搜索 Find a way HDU
    kuangbin专题 专题一 简单搜索 非常可乐 HDU
    kuangbin专题 专题一 简单搜索 Oil Deposits HDU
    kuangbin专题 专题一 简单搜索 迷宫问题 POJ
    Java FileWriter类
    如何将多行中的文本连接成SQL服务器中的单个文本字符串String?
    fread (File input/output) – C 中文开发手册
    ASP.NET Table 控件
  • 原文地址:https://www.cnblogs.com/xiejw/p/5196798.html
Copyright © 2011-2022 走看看