一.归档NSKeyedArchiver==========================

1.第一种方式:存储一种数据。=====================

//归档

//第一种写法

//对象--文件

NSArray* array = [[NSArray alloc]initWithObjects:@"zhang",@"wang",@"li", nil];

NSString* filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"array.txt"];

BOOL success = [NSKeyedArchiver archiveRootObject:array toFile:filePath];

if (success) {

NSLog(@"保存成功");

}

//解归档

NSArray* arr = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

NSLog(@"%@",arr);

2.第二种方式:存储并行数据(存储多种数据)。====================================

//第二种写法:

NSArray* array = @[@"one",@"two",@"three"];

NSDictionary* dic = @{@"key":@"value"};

NSString* str = @"我是中国人,我爱中国";

//NSData 数据流类

//用来存储复杂的数据,把复杂的数据转成数据流格式,可以方便进行存储和传输。

//例如:图片、大文件

//断点续传,假如图片有20M大,

//发邮件:添加附件

NSMutableData* data = [[NSMutableData alloc]init];

//initForWritingWithMutableData 指定要写入的数据流文件

NSKeyedArchiver* archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];

//编码数据,参数一:要准备编码的数据;参数二:编码数据的key,key随便写

[archiver encodeObject:array forKey:@"array"];

[archiver encodeObject:dic forKey:@"dic"];

[archiver encodeObject:str forKey:@"str"];

//编码完成

[archiver finishEncoding];

//指定文件路径

NSString* filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"file2"];

//写入文件

[data writeToFile:filePath atomically:YES];

//====================************************************=========================//

//先把路径下的文件读入数据流中

NSMutableData* fileData = [[NSMutableData alloc]initWithContentsOfFile:filePath];

//把数据流文件读入到了 解归档中

NSKeyedUnarchiver* unArchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:fileData];

//进行解归档

NSArray* UnArray = [unArchiver decodeObjectForKey:@"array"];

NSDictionary* UnDic = [unArchiver decodeObjectForKey:@"dic"];

NSString* UnStr = [unArchiver decodeObjectForKey:@"str"];

//打印

NSLog(@"%@\n%@\n%@\n",UnArray,UnDic,UnStr);

三.第三种归档方式:对类对象进行归档=======================================

1.先在类的头文件中实现<NSCoding>协议

2.在.m中重新编码和解码协议。

//重新initWithCoder 解码方法

-(id)initWithCoder:(NSCoder *)aDecoder

{

NSLog(@"我是解码方法,我负责解码");

self = [super init];

if (self) {

_name = [aDecoder decodeObjectForKey:@"name"];

_phone = [aDecoder decodeObjectForKey:@"phone"];

_address = [aDecoder decodeObjectForKey:@"address"];

}

return  self;

}

//重新编码方法

-(void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:_name forKey:@"name"];

[aCoder encodeObject:_phone forKey:@"phone"];

[aCoder encodeObject:_address forKey:@"address"];

}

//【注】forKey:是字符串;编码方法和解码方法字符串要一致

四.NSFileManager 文件管理类===============================================

1.文件路径------------------------------------------------------------------------------

//根路径

NSString* homePath = NSHomeDirectory();

NSLog(@"%@",homePath);

//oc中有三个目录是可以操作的。

/*

1.Documents//文稿目录

2.tmp//临时目录:程序退出的时候,临时目录内容可能会被情况

3.library--->Cache//缓存目录//app目录下

*/

//获取Documents  目录

//写法一

NSString* Documents = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

NSLog(@"Documents :%@",Documents);

//写法二

NSString* Documents1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDirectory, YES) objectAtIndex:0];

NSLog(@"Documents : %@",Documents1);

//获取应用程序的主目录

NSString* userName = NSUserName();

NSString* rootPath = NSHomeDirectoryForUser(userName);

NSLog(@"app root path:%@",rootPath);

//获取cache目录

NSString* cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSLog(@"cache :%@",cachePath);

//获取tmp目录

NSString* tmpPath = NSTemporaryDirectory();

NSLog(@"tmp:%@",tmpPath);

2.创建目录和文件------------------------------------------------------------------------------------

//获取根目录

NSString* homePath = NSHomeDirectory();

//创建了一个文件管理器

NSFileManager* fileMgr = [NSFileManager defaultManager];

//拼接出想要创建的文件路径

NSString* filePath = [NSString stringWithFormat:@"%@/myFolder",homePath];

//创建文件目录

//第一个参数传入想要创建的文件目录,第二个参数指导是否创建不存在的文件夹,yes代表创建

BOOL isOk = [fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];

if (isOk) {

NSLog(@"创建文件目录成功");

}

NSString* string = @"我爱记歌词";

//把内容写入到指定路径下的指定文件中

BOOL isWriteOk = [string writeToFile:[NSString stringWithFormat:@"%@/1.txt",filePath] atomically:YES encoding:NSUTF8StringEncoding error:nil];

if (isWriteOk) {

NSLog(@"写入文件成功");

}

//数组保存

NSArray* array = @[@"我是一",@"我是三",@"我是周7"];

BOOL isWriteOK1 = [array writeToFile:[NSString stringWithFormat:@"%@/2.txt",filePath] atomically:YES];

if (isWriteOK1) {

NSLog(@"数组写入文件成功");

}

//字典保存

NSDictionary* dic = @{@"key":@"value"};

BOOL isWriteOK2 = [dic writeToFile:[NSString stringWithFormat:@"%@/3.txt",filePath] atomically:YES];

if (isWriteOK2) {

NSLog(@"字典写入文件成功");

}

3.对文件进行重命名---------------------------------------------------------------------------------------------

//获取根目录

NSString* homePath = NSHomeDirectory();

//创建了一个文件管理器

NSFileManager* fileMgr = [NSFileManager defaultManager];

//拼接出想要创建的文件路径

NSString* filePath = [NSString stringWithFormat:@"%@/myFolder/1.txt",homePath];

[fileMgr moveItemAtPath:filePath toPath:[NSString stringWithFormat:@"%@/ai.txt",homePath] error:nil];

4.删除一个文件---------------------------------------------------------------------------------------------

//声明了一个错误信息的对象

NSError* error;

//获取根目录

NSString* homePath = NSHomeDirectory();

//创建了一个文件管理器

NSFileManager* fileMgr = [NSFileManager defaultManager];

//拼接出想要创建的文件路径

NSString* filePath = [NSString stringWithFormat:@"%@/myFolder/3.txt",homePath];

//删除文件

//如果方法执行返回是NO,error会保存错误信息,如果方法执行返回是YES,error = nil

BOOL isok = [fileMgr removeItemAtPath:filePath error:&error];

if (isok) {

NSLog(@"删除文件成功");

}

else

{

NSLog(@"删除文件失败");

//打印错误信息

NSLog(@"%@",error.localizedDescription);

}

Δ【扩展】NSError类,是一个错误信息类

//删除文件

//如果方法执行返回是NO,error会保存错误信息,如果方法执行返回是YES,error = nil

BOOL isok = [fileMgr removeItemAtPath:filePath error:&error];

∆5.删除目录下的所有文件---------------------------------------------------------------------------------------------

//获取根目录

NSString* homePath = NSHomeDirectory();

//创建了一个文件管理器

NSFileManager* fileMgr = [NSFileManager defaultManager];

//拼接出想要创建的文件路径

//        NSString* filePath = [NSString stringWithFormat:@"%@/myFolder/3.txt",homePath];

//如果删除的目录中不带具体的文件,则删除的是整个目录

[fileMgr removeItemAtPath:[NSString stringWithFormat:@"%@/myFolder/",homePath] error:nil];

6.获取目录下的所有文件---------------------------------------------------------------------------------------------

//获取根目录

NSString* homePath = NSHomeDirectory();

//创建了一个文件管理器

NSFileManager* fileMgr = [NSFileManager defaultManager];

//拼接出想要创建的文件路径

NSString* filePath = [NSString stringWithFormat:@"%@/myFolder/",homePath];

//获取当前目录下的所有文件,包括隐藏文件

NSArray* allFile = [fileMgr contentsOfDirectoryAtPath:filePath error:nil];

NSLog(@"%@",allFile);

//获取当前目录以及子目录的所有文件

NSArray* subAllFile = [fileMgr subpathsOfDirectoryAtPath:filePath error:nil];

7.文件的属性---------------------------------------------------------------------------------------------

//获取根目录

NSString* homePath = NSHomeDirectory();

//创建了一个文件管理器

NSFileManager* fileMgr = [NSFileManager defaultManager];

//拼接出想要创建的文件路径

NSString* filePath = [NSString stringWithFormat:@"%@/myFolder/3.txt",homePath];

NSDictionary* fileAttribute = [fileMgr fileAttributesAtPath:filePath traverseLink:YES];

//获取文件的属性

NSData* data = [fileAttribute objectForKey:NSFileModificationDate];

NSLog(@"文件的创建日期:%@",data);

//文件占多少字节

NSNumber * number = [fileAttribute objectForKey:NSFileSize];

NSLog(@"文件的大小:%@",number);

OC-文件操作的更多相关文章

  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文件操作2

    1.对文件本身的操作 NSManager 2.对文件内容的操作 NSHandle 文件句柄 NSFileHandle * fh = [NSFileHandle fileHandleForReading ...

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 部署 jdk

    首先安装jdk jdk提供java环境变量 jvm虚拟机 为什么同一份java程序可以在不同系统上跑? 就是因为jdk jvm虚拟机使java支持 跨平台服务器部署 首先jvm 去读取java代码   ...

  2. 0504-Hystrix保护应用-Hystrix Dashboard的使用与常见问题总结

    一.概述 Hystrix的主要优势之一是它收集的每个HystrixCommand的度量集合. Hystrix仪表板以高效的方式显示每个断路器的运行状况. 以前查看通过http://localhost: ...

  3. ngs中reads mapping-pku的生信课程

    4.NGS中的reads mapping 顾名思义,就是将测序的得到的DNA定位在基因组上. 因为二代测序的得到的序列是较短的,reads mapping很好地解决了这个问题. 本质上reads ma ...

  4. Python高阶函数-闭包

    高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 在这里我们首先回忆一下python代码运行的时候遇到函数是怎么做的. 从python解释器开始执行之后,就在内存中开辟了一个空间 每当 ...

  5. LeetCode:二叉树的后序遍历【145】

    LeetCode:二叉树的后序遍历[145] 题目描述 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很 ...

  6. JAVA接口中不可以有静态方法吗

    1. 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错),所以不能含有静态代码块以及静态方法(用 ...

  7. netty1---传统IO和NIO的区别

    传统IO: package OIO; import java.io.IOException; import java.io.InputStream; import java.net.ServerSoc ...

  8. xx-net***简明使用教程

    简介 继psiphon3.lantern.shadowsocks后,翻 土啬 界就来个新角色:xx-net 这张图是.2016.8.30日Google最新的搜索结果,还是可以看出这款工具的火爆程度的, ...

  9. CF960G(第一类斯特林数)

    题目 CF960G 做法 设\(f(i,j)\)为\(i\)个数的序列,有\(j\)个前缀最大值的方案数 我们考虑每次添一个最小数,则有:\(f(i,j)=f(i-1,j)+(i-1)*f(i-1,j ...

  10. Spring_事务准备