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为文件夹/文件的路径全名
存在疑问
如何设置创建文件的读写权限;
IOS文件系统和数据的永久性存储的更多相关文章
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- iOS开发系列--数据存取
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
- ios的网络数据下载和json解析
ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知 ...
- 【转】iOS开发系列--数据存取
原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- iOS开发网络数据之AFNetworking使用
iOS开发网络数据之AFNetworking使用 如何选择AFNetworking版本 首先得下载AFNetworking库文件,下载时得首先弄清楚,你将要开发的软件兼容的最低版本是多少.AFNetw ...
- iOS学习——JSON数据解析(十一)
在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...
- IOS开发中数据持久化的几种方法--NSUserDefaults
IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...
- iOS之网络数据下载和JSON解析
iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍IOS中如何利用NSURLconnection从网络上下载数据以及如何解析下载下来的JSON数据格式,以及如何显示数据和托图片的异步 ...
随机推荐
- 数往知来 ADO.NET <八>
ADO.NET基础 学习目的:通过程序访问数据库 ,ADO.NET就是一组类库, -->connection 用来连接数据库的类 语法:首先需要一个连接字符串 -->以SQL serv ...
- log4net--帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具
1. log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 2. Log4net的结构如下 ...
- Javascript类型转换表
各种类型的值 转换为各种类型 String Number Boolean Object undefined "undefined" NaN false 报错 null " ...
- xdebug初步
;加载xdebug模块. 根据PHP版本来选择是zend_extension还是zend_extension_ts ts代表线程安全 被坑过1次zend_extension="\web\ ...
- Javascript模板及其中的数据逻辑分离思想(MVC)
#Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...
- 转】启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
原博文出自于:http://www.cnblogs.com/xdp-gacl/p/5288399.html 感谢! 一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务 ...
- Active Record快速入门指南
一.概述 Active Record(中文名:活动记录)是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录.关系型数据库往往通过外键来表述实体关系,A ...
- AutoCAD.NET 不使用P/Invoke方式调用acad.exe或accore.dll中的接口(如acedCommand、acedPostCommand等)
使用C#进行AutoCAD二次开发,有时候由于C#接口不够完善,或者低版本AutoCAD中的接口缺少,有些工作不能直接通过C#接口来实现,所以需要通过P/Invoke的方式调用AutoCAD的其他DL ...
- Mac 与 PC 键盘布局对比
- 解决 Unable to load DLL 'OraOps9.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)
这个问题网上的答案是把oracle的home文件夹权限变为完全控制,然而并没有好用,还有一种方法是在编写的程序的config文件加入 <runtime> <legacyCorrupt ...