数据的存储-NSKeyedArchiver和write to file介绍
数据的存储-NSKeyedArchiver和write to file介绍
首先介绍各个文件的作用-->讲解文件位置的查找方法-->介绍数据存储的方式:1.使用归档方式存储数据 2.writetofile写入方法
iphone沙盒下的目录中存放的是什么信息?
Documents:将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其他应该定期备份的信息。
Library:这个目录下面有两个子目录,Caches和Preferences。
Caches:用于存放应用程序专用的支持文件,保存应用程序首次启动过程中需要的信息。
Preferences:保存应用程序的偏好设置文件。你不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好设置。
tem:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。
获取文件路径的方法:
//沙盒文件的位置
NSHomeDirectory()
// CachesDirectory位置
[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]
// DocumentDirectory位置
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]
// tmp文件的位置
NSTemporaryDirectory()
// PreferencePanesDirectory文件的位置
[NSSearchPathForDirectoriesInDomains(NSPreferencePanesDirectory, NSUserDomainMask, YES) lastObject]
// 将路径用/分开
NSString *path = NSHomeDirectory();
NSArray *pathSep = [path componentsSeparatedByString:@"/"];
文件的存储方式:
方法写入文件。 3.使用NSUserDefault方法来存储类
使用NSKeyedArchiver方法的归档方式:
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
filePath = [filePath stringByAppendingPathComponent:@"data.zip"];
[NSKeyedArchiver archiveRootObject:[@"dalsfjldkjflas" dataUsingEncoding:NSUTF8StringEncoding] toFile:filePath]; NSData *fileData = [[NSData alloc] init];
fileData = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSString *fileString = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
NSLog(@"fileStirng = %@", fileString);
关键方法:
NSKeyedArchiver类的归档存储方法:archiveRootObject:toFile:
NSKeyedUnarchiver类的解压方法:unarchiveObjectWithFile
使用write to file 方法写入文件:
// 将数据保存到文件
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
filePath = [filePath stringByAppendingPathComponent:@"stirng1.zip"];
NSLog(@"%@", filePath);
NSString *string = @"write to the file method";
[string writeToFile:filePath atomically:YES encoding:NSStringEncodingConversionExternalRepresentation error:nil]; // 从文件中提取相应的数据
NSString *stringFile = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSStringEncodingConversionExternalRepresentation error:nil];
NSLog(@"%@", stringFile);
在一般的数据类型例如:NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSData,NSMutableData,NSString,NSMutableString,NSNumber,NSDate中,都有一个方法为writetofile。我们可以使用这个方法将数据存放到起来。
数据的存储-NSKeyedArchiver和write to file介绍的更多相关文章
- MySQL修改数据表存储引擎的3种方法介绍
这篇文章主要介绍了MySQL修改数据表存储引擎的3种方法介绍,分别是直接修改.导出导入.创建插入3种方法, 可以参考下 MySQL作为最常用的数据库,经常遇到各种各样的问题.今天要说的就是表存储引 ...
- Matlab中数据的存储方式
简介 MATLAB提供了丰富的算法以及一个易于操作的语言,给算法研发工作者提供了很多便利.然而MATLAB在执行某些任务的时候,执行效率偏低,测试较大任务量时可能会引起较长时间的等待.未解决这个问题, ...
- Android开发(二十四)——数据存储SharePreference、SQLite、File、ContentProvider
Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/data/程 ...
- 转载 -- iOS数据持久化存储
作者:@翁呀伟呀 授权本站转载 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方 ...
- iOS数据持久化存储
本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...
- 【分布式】Zookeeper数据与存储
一.前言 前面分析了Zookeeper对请求的处理,本篇博文接着分析Zookeeper中如何对底层数据进行存储,数据存储被分为内存数据存储于磁盘数据存储. 二.数据与存储 2.1 内存数据 Zooke ...
- Android开发-之数据的存储方式一
在Android中,数据的存储分为两种方式: 1.直接以文件的形式存储在目录中 2.以json格式存储在数据库中 将数据以文件的存储又分为两种方式: 1.生成.txt文件 2.生成xml文件 那么今天 ...
- Android笔记——Android中数据的存储方式(二)
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
- Android笔记——Android中数据的存储方式(一)
Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...
随机推荐
- DOM对象控制HTML无素——详解2
节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...
- sphinx(coreseek)——1、增量索引
首先介绍一下 CoreSeek/Sphinx的发布包 indexer: 用于创建全文索引; search: 一个简单的命令行(CLI) 的测试程序,用于测试全文索引; search ...
- php中函数前加&符号的作用分解
这篇文章主要介绍了php中的函数前加&符号的作用分解,其作用叫做引用返回,有点抽象,详细解释请看本文内容,需要的朋友可以参考下 (转载) php变量前面加&符号是什么意思就不用多说了 ...
- Mosquitto-MQTT
安装Mosquitto #To use the new repository you should first import the repository package signing key: w ...
- android中使用intent来实现Activity带数据跳转
大家都知道startActivity()是用来切换跳转Activity的.如果想要在另个Activity中出书数据的话.只需要在源activity中使用intent.putExtra()方法传出数据. ...
- Unity3d webplayer发布的问题和100%自适应浏览器
Unity3d发布的问题 发布的时候,遇到无法写入Resources.assets,原来是我的项目中有多个Resources文件夹,以后最好是不要有重复的文件夹和一样名字的资源! 还有就是发布的web ...
- 辉哥用的这种方法实现ZABBIX的MYSQL批量监控
不错的.集中和分布式,总是一对要解决的问题.应该可以再想更好的策略~~ 一.方案需求及思路 因跑MySQL服务的服务器比较多,并且每台服务器可能会运行多个不同端口的数据库,如果单独手动一台一台去修改a ...
- 关于type check的定义
Concept: Type Checking There is no static type checking in Scheme; type checking is done at run time ...
- 自己动手实现Queue
前言: 看到许多面经说,有时候面试官要你自己当场用模板写出自己的vector容器.于是,我也琢磨着怎么自己动手写一个,可是本人才刚刚学C++模板编程不久,会的不多.不过,我恰好在C++ Primer上 ...
- bzoj2539
这道题真的不难,但是细节挺多(具体见程序)题目本身而言,显然是个费用流模型(或者写KM) type node=record point,next,flow,cost:longint; end; ..] ...