OC文件操作2
1、对文件本身的操作 NSManager
2、对文件内容的操作 NSHandle 文件句柄
NSFileHandle * fh = [NSFileHandle fileHandleForReadingAtPath:@""]; //以只读方式打开文件生成文件句柄
内存:内部存储器;硬盘:外部存储设备。 从硬盘到内存(从文件到内存)叫做读,从内存到文件(硬盘)叫做写。
//读取文件内容的两种方式
NSData * data = [fh readDataOfLength:];
//继续上面3个字节后,继续读取5个字节
data = [fh readDataOfLength:];
如果文件内容不是特别的多,可以用下面的方法直接读取全部内容
//如果文件内容不是特别的多,可以用下面的方法直接读取全部内容
data = [fh readDataToEndOfFile];
NSString * str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
除了上面读的方法,还有写的方法。
NSFileHandle * fh = [NSFileHandle fileHandleForWritingAtPath:@""]; //以只写方式打开文件生成句柄
[fh writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]];//直接覆盖掉前面相应数量的字符
类似C语言一样,直接将文件清空,然后将内容写入到文件里面。首先需要将文件字节截短至0
[fh truncateFileAtOffset:];
//将文件内容截断至0字节
[fh writeData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]];
修改文件,将新的内容添加至已有内容的末尾。
[fh seekToEndOfFile]; //将读写指针设在文件的尾端
[fh writeData:[@"XXX" dataUsingEncoding:NSUTF8StringEncoding]];
3、归档
归档:把平时使用的变量或者对象以一定的格式写入文件中进行存储,等到需要的时候直接读取出来就能还原成原对象的格式。
#define PATH @"/Users/liyang/Desktop/Test/file.plist" NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"",@"two",@"",@"three",@"",nil];
[dict writeToFile:PATH atomically:YES]; NSDictionary * dict = [[NSDictionary alloc] initWithContentsOfFile:PATH];
[NSLog @"%@",dict]; NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil];
[array writeToFile:PATH atomically:YES];
如果处理的数据较大的时候,需要一个辅助的类似NSKededArchieve。
NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"one",@"",@"two",@"",@"three",@"",nil];
NSArray * array = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",nil];
NSMutableData * data = [[NSMutableData alloc] init];
NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMudatableData:data];
[archiver encodeObject:array forKey:@"array"];
[archiver encodeObject:dict forKey:@"dict"];
[archiver finishEncoding];
[data writeToFile:PATH atomically:YES];
归档后的内容看上去都是乱码,可以用反归档对象NSKeyedUnarchiver获取plist文件里面的内容
//获取plist的内容
NSData * data = [[NSData alloc] initWithContentsOfFile:PATH];
NSKeyedUnarchiver * unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSArray * array = [unarchiver decodeObjectForKey:@"array"];
NSLog(@"%@",array);
OC文件操作2的更多相关文章
- OC文件操作1
主要内容: 1)文件操作:对文件本身的操作(NSManager) 2)对文件内容的操作(NSHandle) 1.NSManager 创建一个单例的file manager的对象 //创建一个单例的fi ...
- OC文件操作(2)
NSFileManager 文件管理器完成文件的创建.移动.拷贝等管理操作 1.查询文件和目录 OC中查询路径下的目录主要分为浅度遍历和深度遍历. 浅度遍历 NSFileManager * ma ...
- OC文件操作(1)
1.文件的浅度遍历与深度遍历: //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器 //第一步创建一个文件管理器 NSError ...
- OC文件操作、获取文件属性
#import <Foundation/Foundation.h> //获取文件的属性 int main(int argc, const char * argv[]) { @autorel ...
- 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)
========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...
- PHP文件操作系统----主要的文件操作函数
一.文件操作系统概述 1.概述: php中的文件操作系统主要是对文件和目录的操作.文件在windows系统下分为3种不同:文件.目录.未知,在linux/unix系统下分为7种不同:block.cha ...
- 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档
.net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...
- 野路子出身PowerShell 文件操作实用功能
本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...
- Node基础篇(文件操作)
文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...
随机推荐
- ThreadPoolExecutor 杂记
When a new task is submitted in method execute(Runnable), and fewer than corePoolSize threads are ru ...
- C#实现文件下载的几种方式
上篇博客也说了下C#中通过XML导出Excel,这些文件操作都挺有用的,下面是文件的下载,之前做项目都是把它写的空间日志中,以后有时间了把它们都弄出来 先把有问题的代码贴出来吧 using Syste ...
- WCF Data Services 5.0 for OData V3
https://www.microsoft.com/en-us/download/details.aspx?id=29306 VS 2010 下 安装 WCF Data Services 5.0 en ...
- 编译android源码遇到错误及其解决方法
升级ubuntu的14.04后,android的源码又编译错误了,一下是错误说明赫解决方法: 1.make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_ ...
- jQuery基础---常规选择器
内容摘要: 1.简单选择器 2.进阶选择器 3.高级选择器 发文不易,转载请注明出处! jQuery 最核心的组成部分就是:选择器引擎.它继承了 CSS 的语法,可以对 DOM 元素的标签名.属性名. ...
- Java学习--扑克牌比大小的小游戏
实现:生成五十四张牌,然后进行洗牌,输入两名玩家,然后分别发两张牌,进行比较大小,两张牌中拥有较大一张牌的玩家获胜 Card.java代码如下: package com.cardgame; publi ...
- UVA401(回文子串和镜像串)
可以先设一个常量镜像串,直接返回比较 #include <iostream> #include <string> #include <cstring> #inclu ...
- Dubbo 体验(一)
最近新加入一个项目组,所使用的是Dubbo,采用的架构是分布式架构,数据库采用MySQL分片.之前也接触过一下,但为了能更好融入团队,所以找Dubbo官网看文档. 才发现Dubbo的官网已搬去apac ...
- ajax+json+ashx实现一个页面多个tab的分页
1:项目功能需求:我的荣誉.审核中的荣誉.审核通过的荣誉在一个页面分别作列表展示.每个tab都需要分页,对实现的功能做个简单总结. 2:前台页面:引用的DBPage.js和pageCss.css实现分 ...
- rocketmq 控制台 trackType NOT_CONSUME_YET
1. 问题描述 rocketmq消费者偶有没有收到消息,查看后台, 显示NOT_CONSUME_YET 2. 分析 mq控制台 显示有该条消息数据 只是状态为未消费 那么问题应该出在 消费者一方 诶? ...