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数据格式,以及如何显示数据和托图片的异步 ...
随机推荐
- 该不该将变量设为 null ?
该不该将变量设为 null ? 对于引用类型的变量,在什么时候需要将其显式设为 null ,在什么时候不需要呢? 局部变量 对于局部变量,在方法结束的时候,变量就会失效,变量指向的对象引用也会减少一个 ...
- LeetCode Database: Rank Scores
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...
- Java正则表达式获取网页所有网址和链接文字
; pos1= urlContent.indexOf(strAreaBegin)+strAreaBegin.length(); pos2=urlContent.inde ...
- sqlite使用小结
官方网站 http://www.sqlite.org/index.html 图形前端 http://www.sqlabs.net/sqlitemanager.php 个人觉得firefox的sqlit ...
- Ubuntu 下无法Tab键自动补全功能解决办法
在Ubuntu下 使用Tab键报错:cannot create temp file for here-document: no space left on device 解决: rm -rf /var ...
- Mellanox vma
1,Mellanox offical vma Installation guide personal reading summarize VMA是一个消息加速器messaging accelerato ...
- 游戏被App Store下架 如何快速上线?
游戏被App Store下架 如何快速上线? 发布者: sea_bug | 发布时间: 2014-12-20 14:17| 评论数: 0 近日,有媒体报道出国内某家CP的产品被苹果从App Store ...
- git 和 svn的区别(转)
英文原文:5 Fundamental differences between GIT & SVN,编译:外刊IT评论 如果你在读这篇文章,说明你跟大多数开发者一样对GIT感兴趣,如果你还没有机 ...
- [iOS微博项目 - 3.1] - 发微博界面
github: https://github.com/hellovoidworld/HVWWeibo A.发微博界面:自定义UITextView 1.需求 用UITextView做一个编写微博的输 ...
- wikioi 3038 3n+1问题
题目描述 Description 3n+1问题是一个简单有趣而又没有解决的数学问题.这个问题是由L. Collatz在1937年提出的.克拉兹问题(Collatz problem)也被叫做hailst ...