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为文件夹/文件的路径全名

存在疑问

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

IOS文件系统和数据的永久性存储的更多相关文章

  1. iOS中的数据持久化方式

    iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...

  2. iOS开发系列--数据存取

    概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...

  3. ios的网络数据下载和json解析

    ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知 ...

  4. 【转】iOS开发系列--数据存取

    原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...

  5. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  6. iOS开发网络数据之AFNetworking使用

    iOS开发网络数据之AFNetworking使用 如何选择AFNetworking版本 首先得下载AFNetworking库文件,下载时得首先弄清楚,你将要开发的软件兼容的最低版本是多少.AFNetw ...

  7. iOS学习——JSON数据解析(十一)

    在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...

  8. IOS开发中数据持久化的几种方法--NSUserDefaults

    IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...

  9. iOS之网络数据下载和JSON解析

    iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍IOS中如何利用NSURLconnection从网络上下载数据以及如何解析下载下来的JSON数据格式,以及如何显示数据和托图片的异步 ...

随机推荐

  1. 两款较好的Web前端性能测试工具

    前段时间接手了一个 web 前端性能优化的任务,一时间不知道从什么地方入手,查了不少资料,发现其实还是蛮简单的,简单来说说. 一.前端性能测试是什么 前端性能测试对象主要包括: HTML.CSS.JS ...

  2. c#中格式化导出Excel数据

    在项目开发过程中经常会遇到数据导出Excel.如果只是导出数据就好办了.但往往用户会有各种格式要求.加粗.边框.合并单元格.汇总等功能. 以下的方法是基于Excel模版方式写入数据导出的功能.可以最大 ...

  3. Scrum流程

    敏捷Scrum流程图: Sprint Planing Meeting: 1.Next Spring Goal; 2.Sprint Backlog; 3.Updated Product Backlog; ...

  4. ubuntu ip

    一.使用命令设置Ubuntu IP地址 1.修改配置文件blacklist.conf禁用IPV6 sudo vi /etc/modprobe.d/blacklist.conf 在文档最后添加 blac ...

  5. 25个完美的Opencart模板,让顾客无法抗拒!

    在线开展业务是当前的流行趋势.OpenCart(点击这里下载),作为一个流行的开源PHP电子商务系统,获取OpenCart模板不在像以前那么困难了.OpenCart容易安装,模板支持良好,扩展功能包十 ...

  6. PHP正则表达式匹配中文字符

    网上有很多类似的文章,但往往都不能用 所以记录一下 preg_match_all("/([\x{4e00}-\x{9fa5}])/u", $input, $match); 注意:限 ...

  7. Linux环境变量(小马哥推荐)

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一 ...

  8. Java基础 —— JavaScript

    Javascript:基于对象与事件驱动的脚本语言,主要用于客户端 特点: 交互性:信息动态交互. 安全性:不能访问本地硬盘. 跨平台性:只要有浏览器就支持Javascript,与平台无关. Java ...

  9. android学习笔记---发送状态栏通知

    发送消息的代码如下: //获取通知管理器 NotificationManager mNotificationManager = (NotificationManager) getSystemServi ...

  10. ld - linker

    [ld - linker] NAME ld -- linker SYNOPSIS ld files...  [options] [-o outputfile] DESCRIPTION The ld c ...