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的更多相关文章

  1. OC文件操作1

    主要内容: 1)文件操作:对文件本身的操作(NSManager) 2)对文件内容的操作(NSHandle) 1.NSManager 创建一个单例的file manager的对象 //创建一个单例的fi ...

  2. OC文件操作(2)

    NSFileManager 文件管理器完成文件的创建.移动.拷贝等管理操作 1.查询文件和目录  OC中查询路径下的目录主要分为浅度遍历和深度遍历.  浅度遍历  NSFileManager * ma ...

  3. OC文件操作(1)

    1.文件的浅度遍历与深度遍历: //NSFileManager * fm = [[NSFileManager alloc]init];//创建文件管理器 //第一步创建一个文件管理器 NSError ...

  4. OC文件操作、获取文件属性

    #import <Foundation/Foundation.h> //获取文件的属性 int main(int argc, const char * argv[]) { @autorel ...

  5. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  6. PHP文件操作系统----主要的文件操作函数

    一.文件操作系统概述 1.概述: php中的文件操作系统主要是对文件和目录的操作.文件在windows系统下分为3种不同:文件.目录.未知,在linux/unix系统下分为7种不同:block.cha ...

  7. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  8. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  9. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

随机推荐

  1. sgu-203 Hyperhuffman(哈夫曼编码)

    Hyperhuffman You might have heard about Huffman encoding - that is the coding system that minimizes ...

  2. Memcached分布式算法详解--转

    http://xiexiejiao.cn/java/memcached-consistent-hashing.html Memcached分布式算法在网上一搜可以找到一大片了,不过对于Memcache ...

  3. [PY3]——函数——函数注解 | 实现类型检查功能

    函数注解(Function Annotations)——> 可以在定义函数的时候对参数和返回值添加注解 写函数注解 #平时我们使用help()可以查看一个函数的说明,我们自己写的函数也可以提供这 ...

  4. SQL Serever学习7——数据表2

    修改数据表的属性 保存数据表的修改的时候,总会弹出阻止修改的警告. 解决方法2种: 1.可以使用T-sql语句强行修改 2.工具>选项>设计器>表设计器和数据库设计器>阻止保存 ...

  5. ContextMenustrip 控件

    ContextMenustrip 控件是由 System.Windows.Forms.ContextMenustrip类提供,也是ToolstripMenu对象的容器,用来创建窗体的右键显示的菜单,主 ...

  6. Hadoop学习笔记(8) ——实战 做个倒排索引

    Hadoop学习笔记(8) ——实战 做个倒排索引 倒排索引是文档检索系统中最常用数据结构.根据单词反过来查在文档中出现的频率,而不是根据文档来,所以称倒排索引(Inverted Index).结构如 ...

  7. [LeetCode]Combination Sum题解(DFS)

    Combination Sum Given a set of candidate numbers (C) (without duplicates) and a target number (T), f ...

  8. redis使用及配置之缓存详解

    redis使用及配置之缓存详解 1.Redis的介绍 Redis是一个Key-Value存储系统.它支持存储的value类型有:string(字符串),list(链表), set(无序集合),zset ...

  9. java 通用对象排序

    一个排序类,一个排序util? no.no.no…… 使用反射机制,写了一个通用的对象排序util,欢迎指正. 实体类: package entity; public class BaseTypeEn ...

  10. UGUI——重写Image类实现进度条

    目的: 游戏中经常会用到进度条,但是美术给的图片用filled一拉伸就很难看,如下图 第一种模式是九宫格模式,第二种是filled.而我们需要的是两种可结合的. 如何实现: 新建一个类,继承image ...