zoukankan      html  css  js  c++  java
  • IOS文件系统和数据的永久性存储

    IOS中的文件系统和数据的永久性存储

     

    目录

    • 概述——对文件系统和数据的永久性存储的理解
    • IOS中数据的永久性存储

    NSUserDefaults

    解档和归档

    数据库

    • 文件系统

    NSBundle

    IOS的Document、Library(Caches、Preference)、tmp

    • NSFileManager

    获得NSFileManager

    判断文件夹/文件是否存在

    创建文件夹

    创建文件 

    删除文件或文件夹

      

    概述——对文件系统和数据的永久性存储的理解

    程序运行时数据的读取和写出,往往都是存在内存中的,当程序运行结束时,这些数据就会随着内存的清空而消失。有时,我们需要读取本地文件或者永久性的存储一些有用的数据时,我们就需要使用到文件系统和数据的永久性存储技术。IOS中数据的永久性存储的实现方式可以分为:NSUserDefaults、解档和归档、数据库;文件系统,读取或存储文件的路径有:NSBundle(只读)、IOS的Document、Library(Caches、Preference)、tmp;操作文件夹和文件的类:NSFileManager;常用的文件格式:.plist、.txt、.archiver; 

     

    IOS中数据的永久性存储

    NSUserDefaults

    创建:NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    设值:例如:[userDefault setInteger: forKey: ];[userDefault setObject: forKey: ];[userDefault setURL: forKey: ];

    获值:例如:[userDefault integerForkey: ];[userDefault objectForKey: ];[userDefault URLForKey: ];

    解档和归档

    Foundation对象的归档和解档;

    自定义对象(该对象需要遵守和实现NSCoding协议)的归档和解档;

    涉及到的类:NSKeyedArchiver和NSKeyedUnarchiver;

    数据库

    详细请看《数据库》

     

    文件系统

    NSBundle

    获得NSBundle的路径:

    NSString *path = [[NSBundle mainBundle] pathForResource: ofType: ]];

    注意:NSBundle中的文件只能进行读取不能进行更改,即使对NSBundle中的文件进行更改,其实是更改内存中其所对应的文件,实际的文件是没有被更改过的;

    IOS的Document、Library(Caches、Preference)、tmp

    获得Document路径方法:

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

    NSString *document_path = [paths objectAtIndex:0];

    注意:可以在Document中进行读写操作;

    对这些不同路径的理解

     

     NSFileManager

    获得NSFileManager

    NSFileManager *fileManager = [NSFileManager defaultManager];

    判断文件夹/文件是否存在:

    [fileManager fileExistsAtPath: ];

    创建文件夹

    [fileManager createDirectoryAtPath: withIntermediateDirectories: createIntermediates attributes: error: ]  //参数createIntermediates为是否创建新建文件目录里不存在的中间目录,详见文档,根据error判断是否成功创建

    创建文件的方法:

    [fileManager createFileAtPath: contents: attributes: ];  //成功创建和文件已经存在都会返回YES,所以有时需要让程序更清晰,需要在创建文件前先判断文件是否已经存在,存在则不进行创建

    删除文件或文件夹

    [fileManager removeItemAtPath: error: ];

    注意

    Path为文件夹/文件的路径全名

    存在疑问

    如何设置创建文件的读写权限;

     

  • 相关阅读:
    c++ time_t
    sql 一些题目
    vc 找到一个或多个多重定义的符号
    c++ json 详解
    c++ json cpp
    C++ string(转)
    java web 复选框checked
    20_采用ContentProvider对外共享数据
    16_采用SharedPreferences保存用户偏好设置参数
    android开发 eclipse alt+”/”自动提示失效
  • 原文地址:https://www.cnblogs.com/IOS-Developer/p/4117234.html
Copyright © 2011-2022 走看看