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. tomcat+nginx+redis集群搭建并解决session共享问题。

    1 集群搭建 https://www.cnblogs.com/yjq520/p/7685941.html 2 session共享 https://blog.csdn.net/tuesdayma/art ...

  2. [译]用R语言做挖掘数据《五》

    介绍 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. ...

  3. WPF 小知识点001

    1.DataGrid 单选事件 <DataGrid MinHeight="150"                  AutoGenerateColumns="Fa ...

  4. SSIS教程:创建简单的ETL包 -- 6. 对项目部署模型使用参数(Using Parameters with the Project Deployment Model)

    在本课中,将修改在第 5 课: 添加包部署模型的包配置中创建的包,以便使用项目部署模型.您将使用一个参数替换该配置值,以便指定示例数据位置.还可以复制本教程附带的已完成的 Lesson 5 包. 使用 ...

  5. NUmericupdown控件

    Numericupdown控件是由system.windows.froms.Numericupdown类提供的,主要作用是将一个数按一定的值进行增加或减少.它主要有四个常用属性   Increment ...

  6. Cheatsheet: 2017 10.01 ~ 12.31

    Mobile Updating Your App for iOS 11 Get Started With Natural Language Processing in iOS 11 Getting S ...

  7. 撩课-Java每天5道面试题第18天

    121.描述Struts2的工作原理 客户端发送请求--> 请求经过一系列过滤器-> FilterDispatcher通过 ActionMapper来决定这个Reques t需要调用哪个A ...

  8. springMVC 静态资源加版本号

    springMVC 静态资源加版本号 http://blog.csdn.net/zhangt85/article/details/42126275

  9. springboot基本注解

    声明Bean的注解: @Component组件 @Service service层 @Respository dao层 @Controller 注入Bean的注解: @Autowired Spring ...

  10. Java 集合:迭代器(Iterator, Iterable)

    Iterator接口 public interface Iterator<E> { boolean hasNext(); E next(); void remove(); } 访问元素前需 ...