主要内容:
归档
文件管理实例
json 解析
plist 解析
//
// main.m
// 归档
//
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
/**
归档:一种存储数据的方式 ,注意:要想实现归档,必须遵守NSCoding协议
1.什么是协议?
2.分两种:1.对系统的类进行的归档 2.对自定义的类进行的归档
*/
//1.什么是协议? 是一个方法列表。 只有方法的声明,本身没有实现,实现放在引用协议的类里面
//使用:1.创建协议 2.引入到使用类里面 3.让这个类引入这个协议 4.在类的实现当中写协议的实现。
//格式:@protocol 协议的名字
// 方法列表
// @end
NSString *path = @"/Users/qianfeng/Desktop/guidang.rtf";
Person *person = [[Person alloc]init];
person.name = @"liming";
[person run];
//1.对系统的类进行的归档 注意:不止这个类要遵守协议,数组的元素也要遵守协议。
//1.1创建数组
NSArray *array = @[@"11",[NSNumber numberWithInt:3],person];
//1.2归档
[NSKeyedArchiver archiveRootObject:array toFile:path];
//解档
NSArray *newArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@",newArray);
// 2.对自定义的类进行的归档
//创建对象并赋值
Person *person1 = [[Person alloc]init];
person1.name = @"wangming";
person1.age = 30;
//归档
[NSKeyedArchiver archiveRootObject:person1 toFile:path];
//解档
Person *person4 = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@,%i",person4.name,person4.age);
//作用:保值,可以比较长久的保存值(只要不卸掉软件,值就在)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//通过键值对
[defaults setObject:@"wangwu" forKey:@"name"];
[defaults setFloat:3 forKey:@"age"];
}
return 0;
}
//
// FileManage.m
// 文件管理实例
//
// Created by zhaokai on 14-12-2.
// Copyright (c) 2014年 zhaokai. All rights reserved.
//
#import "FileManage.h"
@implementation FileManage
//私有方法
+(void)replaceStringInTextFile:(NSString *)filePath withOldString:(NSString *)oldString toNewString:(NSString *)newString addingString:(NSString *)adding {
//5.替换
//5.1使用文件句柄
NSFileHandle *handle = [NSFileHandle fileHandleForUpdatingAtPath:filePath];
//5.2容错处理
if (!handle) {
NSLog(@"文件打开失败");
return;
}
//5.3做备份
NSString *path = [@"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/作业/" stringByAppendingString:adding];
NSFileManager *manager = [NSFileManager defaultManager];
[manager copyItemAtPath:filePath toPath:path error:nil];
//5.4获取文件内容
//注意:当文件比较小的时候,可以直接从头读到尾
NSData *contentData = [handle readDataToEndOfFile];
//5.5转化成字符串
NSString *contentString = [[NSString alloc]initWithData:contentData encoding:NSUTF8StringEncoding];
//5.6替换
//作用:会将文件中所有的oldString都替换成newString
contentString = [contentString stringByReplacingOccurrencesOfString:oldString withString:newString];
//5.7 清空原来文件的内容
[handle truncateFileAtOffset:0];
//5.8写入缓存
[handle writeData:[contentString dataUsingEncoding:NSUTF8StringEncoding]];
//5.9写入磁盘
[handle synchronizeFile];
}
+(void)replaceStringInDirectory:(NSString *)directoryPath withOldString:(NSString *)oldString toNewString:(NSString *)newString fileType:(NSString *)type{
//1.创建文件管理类
NSFileManager *manager = [NSFileManager defaultManager];
//2获取路径下的文件
NSArray *array = [manager subpathsOfDirectoryAtPath:directoryPath error:nil];
//3.得到后缀名
NSString *extension = [@"." stringByAppendingString:type];
//4获取.txt文件
//int i = 0;
for (NSString *component in array) {
if ([component hasSuffix:extension]) {
NSString *absolutePath = [directoryPath stringByAppendingString:component];
[self replaceStringInTextFile:absolutePath withOldString:oldString toNewString:newString addingString:component];
}
}
}
@end
//
// main.m
// json解析
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
/**
json简介:json格式的文件 轻量级的解析方式
重要性:传输数据的格式
*/
//解析
// NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:@"/Users/qianfeng/Desktop/共享资料/oc第七天/学生资料/jsonUserList.txt"];
// NSLog(@"dic%@",dic);
//先得到文件的内容
NSString *string = [NSString stringWithContentsOfFile:@"/Users/qianfeng/Desktop/共享资料/oc第七天/学生资料/jsonUserList.txt" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",string);
//利用oc自带的json解析器解析
/**
第一个参数:将要解析的数据
第二个参数:(NSJSONReadingOptions)
NSJSONReadingMutableContainers = (1UL << 0), 顶层是字典或数组
NSJSONReadingMutableLeaves = (1UL << 1), 顶层是字符串
NSJSONReadingAllowFragments = (1UL << 2) 顶层不能是字典或数组
*/
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
//解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"dic%@",dic[@"count"]);
}
//
// main.m
// plist解析
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
/**
plist:存储的是NSDictionary,NSArray,NSNumber,BOOL,NSString内容。
大多数情况下最外层是字典
作用:存储属性,属性级的存储方式。
*/
//1.找到plist文件,找路径
NSString *path = @"/Users/qianfeng/Desktop/共享资料/oc第七天/学生资料/myInfo.plist";
//2.创建一个空的字典
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc]init];
//预处理命令 条件编译
#if 1
//3.添加数据
[dictionary setObject:[NSNumber numberWithInt:4] forKey:@"age"];
[dictionary setObject:[NSNumber numberWithChar:'c'] forKey:@"symbol"];
[dictionary setObject:@"lilei" forKey:@"name"];
[dictionary setObject:@[@"chinese",@"english"] forKey:@"Score"];
//4.将数据写入plist文件
//第二个参数:如果写到一半,发生了别的事情,不能继续,写完的部分是否保留。
[dictionary writeToFile:path atomically:YES];
#else
dictionary = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"dictionary:%@",dictionary);
#endif
}
return 0;
}